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


C# IReflect.GetMembers方法代码示例

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


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

示例1: GetProperties

 private static object[] GetProperties(IReflect type)
 {
     SortedList<string, List<EditorProperty>> folders = new SortedList<string, List<EditorProperty>>();
     // Get all public and not so public fields and properties with EditorProperty
     // attribute.
     var members =
         type.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)
             .Where(member => member.ContainsAttribute<EditorPropertyAttribute>());
     foreach (MemberInfo member in members)
     {
         EditorPropertyAttribute attribute = member.GetAttribute<EditorPropertyAttribute>();
         // Validate the type.
         EditorPropertyType propType = Entity.GetEditorType(member.GetAssociatedType(), attribute.Type);
         // Use default folder, if it is not specified.
         string folderName = attribute.Folder ?? "Default";
         // Register new folder, if there is a need for that.
         if (!folders.ContainsKey(folderName))
         {
             folders.Add(folderName, new List<EditorProperty>());
         }
         // Add the property to the folder.
         folders[folderName].Add
         (
             new EditorProperty
             (
                 attribute.Name ?? member.Name,
                 attribute.Description,
                 attribute.DefaultValue ?? new Func<string>
                 (
                     delegate
                     {
                         switch (propType)
                         {
                             case EditorPropertyType.Bool:
                                 return "false";
                             case EditorPropertyType.Int:
                             case EditorPropertyType.Float:
                                 return "0";
                             case EditorPropertyType.Vector3:
                             case EditorPropertyType.Color:
                                 return "0,0,0";
                             default:
                                 return "";
                         }
                     }
                 ).Invoke(),
                 propType,
                 new EditorPropertyLimits
                 {
                     Min = attribute.Min,
                     Max = attribute.Max
                 },
                 attribute.Flags
             )
         );
     }
     // Now lets create the array of properties.
     List<object> properties = new List<object>();
     foreach (KeyValuePair<string, List<EditorProperty>> folder in folders)
     {
         if (folder.Key == "Default")
         {
             properties.AddRange(folder.Value.Cast<object>());
         }
         else
         {
             properties.Add(new EditorProperty(folder.Key, "", "", EditorPropertyType.FolderBegin));
             properties.AddRange(folder.Value.Cast<object>());
             properties.Add(new EditorProperty(folder.Key, "", "", EditorPropertyType.FolderEnd));
         }
     }
     return properties.ToArray();
 }
开发者ID:RoqueDeicide,项目名称:CryCIL,代码行数:73,代码来源:EntityRegister.cs


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