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


C# PropertyType.GetType方法代码示例

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


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

示例1: Process

        public void Process(IEnumerable<DocumentTypeMetadata> types)
        {
            var contentTypes = new List<IContentType>();
            var dataTypeDefinitions = DataTypeService.GetAllDataTypeDefinitions().ToArray();

            foreach (var type in types)
            {
                var ct = ContentTypeService.GetContentType(type.Alias) ?? new ContentType(-1);

                ct.Name = type.Name;
                ct.Alias = type.Alias;
                ct.AllowedAsRoot = type.AllowAsRoot;
                ct.Description = type.Description;
                ct.Icon = type.Icon;
                ct.Thumbnail = type.Thumbnail;

                var properties = ct.PropertyTypes.ToArray();

                var newProperties = type.Properties.Where(p => !properties.Any(x => x.Alias == p.Alias));

                foreach (var property in newProperties)
                {
                    var p = new PropertyType(dataTypeDefinitions.First(dtd => dtd.Name == property.DataType))
                    {
                        Name = property.Name,
                        Alias = property.Alias,
                        Description = property.Description
                    };

                    if (property.Tab == null)
                        ct.AddPropertyType(p);
                    else
                        ct.AddPropertyType(p, property.Tab.ToString());
                }

                var modifiedProperties = type.Properties.Join(properties, p => p.Alias, p => p.Alias, (meta, p) => new
                {
                    Metadata = meta,
                    PropertyType = p
                });

                foreach (var property in modifiedProperties)
                {
                    var p = property.PropertyType;
                    var meta = property.Metadata;

                    p.Name = meta.Name;
                    p.DataTypeDefinitionId = dataTypeDefinitions.First(dtd => dtd.Name == meta.DataType).Id;
                    p.Description = meta.Description;

                    //the following hack is brought to you be the letter F
                    var fn = p.GetType().GetProperty("PropertyGroupId", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(p) as System.Lazy<int>;
                    if (fn != null)
                    {
                        var tabId = fn.Value;
                        var tab = ct.PropertyGroups.FirstOrDefault(t => t.Id == tabId);
                        var newTabName = meta.Tab.ToString();
                        var newTab = ct.PropertyGroups.FirstOrDefault(t => t.Name == newTabName);

                        if (tab != null && tab.Name != newTabName)
                        {
                            if (newTab == null)
                                ct.AddPropertyGroup(newTabName);

                            ct.MovePropertyType(p.Alias, newTabName);
                        }
                    }
                }

                contentTypes.Add(ct);
            }

            ContentTypeService.Save(contentTypes);

            var preprocessedData = contentTypes
                .Join(types, x => x.Alias, x => x.Alias, (ct, m) => new { ct, m })
                .ToDictionary(x => x.ct, x => x.m);

            SetupAllowedChildren(preprocessedData);
            SetupTemplates(preprocessedData);

            ContentTypeService.Save(contentTypes);
        }
开发者ID:Kevnz,项目名称:uCodeIt,代码行数:83,代码来源:DefaultImporter.cs


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