当前位置: 首页>>代码示例>>C#>>正文


C# IObjectSpace.CreateCollection方法代码示例

本文整理汇总了C#中IObjectSpace.CreateCollection方法的典型用法代码示例。如果您正苦于以下问题:C# IObjectSpace.CreateCollection方法的具体用法?C# IObjectSpace.CreateCollection怎么用?C# IObjectSpace.CreateCollection使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IObjectSpace的用法示例。


在下文中一共展示了IObjectSpace.CreateCollection方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: findApplicationObjectByReplicationKey

        /// <summary>
        /// Finds the application object by replication key.
        /// </summary>
        /// <param name="classType">Type of the class.</param>
        /// <param name="reference">The reference.</param>
        /// <param name="objectSpace">The object space.</param>
        /// <returns>Application object</returns>
        private static object findApplicationObjectByReplicationKey(Type classType, 
            IObjectReference reference, IObjectSpace objectSpace)
        {
            object result = null;
            var modelClass = XafDeltaModule.XafApp.FindModelClass(classType);
            if (modelClass != null && reference.ReplicationKey != null)
            {
                var replicationKeyMember = ExtensionsHelper.GetReplicationKeyMember(modelClass.TypeInfo);
                var replicationKeyIsCaseInsensitive = modelClass.ReplicationKeyIsCaseInsensitive();
                var replicationKeyIsSpaceInsensitive = modelClass.ReplicationKeyIsSpaceInsensitive();
                if (replicationKeyMember != null)
                {

                    CriteriaOperator opLeft = new OperandProperty(replicationKeyMember.Name);
                    CriteriaOperator opRight = new OperandValue(reference.ReplicationKey);

                    if (replicationKeyIsCaseInsensitive)
                    {
                        opLeft = new FunctionOperator(FunctionOperatorType.Upper, opLeft);
                        opRight = new FunctionOperator(FunctionOperatorType.Upper, opRight);
                    }

                    if (replicationKeyIsSpaceInsensitive)
                    {
                        opLeft = new FunctionOperator(FunctionOperatorType.Replace, opLeft,
                            new OperandValue(" "), new OperandValue(String.Empty));
                        opRight = new FunctionOperator(FunctionOperatorType.Replace, opRight,
                            new OperandValue(" "), new OperandValue(String.Empty));
                    }

                    var keyCriteria = new BinaryOperator(opLeft, opRight, BinaryOperatorType.Equal);
                    if(replicationKeyMember.MemberInfo.IsAliased)
                    {
                        var list = objectSpace.CreateCollection(modelClass.TypeInfo.Type);

                        result = (from c in list.Cast<object>()
                                  let objKeyValue = replicationKeyMember.MemberInfo.GetValue(c)
                                  where keysMatches(objKeyValue, reference.ReplicationKey,
                                    replicationKeyIsCaseInsensitive, replicationKeyIsSpaceInsensitive)
                                  select c).FirstOrDefault();
                    }
                    else
                        result = objectSpace.FindObject(classType, keyCriteria, true);
                }
            }
            return result;
        }
开发者ID:xafdelta,项目名称:xafdelta,代码行数:54,代码来源:OidMap.cs


注:本文中的IObjectSpace.CreateCollection方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。