使用反射按顺序获取类的属性

西瓦·拉吉尼(SivaRajini)

请参考此代码

public class A : B
{
     [Display(Name = "Initial Score Code", Order =3)]
     public Code { get; set; }

     [Display(Name = "Initial Score Code", Order =2)]
     public Name{ get; set; }
............

}

我需要通过Display的orderAttribute通过order获取类的所有属性。我已经尝试使用此代码来做

 var prop = typeof(A)
            .GetProperties()
            .OrderBy(p => ((DisplayAttribute)p.GetCustomAttributes(typeof(DisplayAttribute),  true).FirstOrDefault).Order);

但这会导致错误

对象引用不设置对象的实例

由于某些属性在“ DisplayAttribute”中不具有“ Order”属性,因此我假定了此问题。

如何处理这种情况?即使某些属性不具有order属性的值,我也需要对所有属性进行排序。

谢尔盖·别列佐夫斯基(Sergey Berezovskiy)

你缺少支架()FirstOrDefault操作。还应该处理返回默认值的情况。我建议Order在获取第一个或默认值之前选择值。这将返回0所有不具有的属性DisplayAttribute

var prop = typeof(A)
    .GetProperties()
    .OrderBy(p => p.GetCustomAttributes(typeof(DisplayAttribute), true)
                   .Cast<DisplayAttribute>()
                   .Select(a => a.Order)
                   .FirstOrDefault());

如果希望不带DisplayAttribute的属性位于最后,则可以提供Int32.MaxValue要返回的默认值:

                   .Select(a => a.Order)
                   .DefaultIfEmpty(Int32.MaxValue)
                   .First()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用反射获取类内列表属性的count属性值

来自分类Dev

使用反射获取属性

来自分类Dev

Java / Scala反射:按顺序获取类方法并强制对象初始化

来自分类Dev

使用反射从父类获取自己的属性名称

来自分类Dev

使用反射获取继承接口的类的属性

来自分类Dev

如何在WinRT中使用反射获取类的静态属性

来自分类Dev

使用反射获取属性引用

来自分类Dev

如何使用 C# 反射获取实例化的属性或非 null 的类类型的属性

来自分类Dev

如何使用反射从类中检索属性

来自分类Dev

使用标签按数据属性获取元素并添加禁用的类

来自分类Dev

如何在运行时使用反射从类的对象获取属性的值

来自分类Dev

使用反射将类中的所有静态属性作为对象获取VB.NET

来自分类Dev

使用反射从集合类获取对象

来自分类Dev

使用反射,获取对象的父类/字段

来自分类Dev

使用Java反射获取类数组的类型

来自分类Dev

使用Java反射获取类数组的类型

来自分类Dev

使用反射获取用户声明的类

来自分类Dev

使用通用类型对象的反射获取属性

来自分类Dev

使用反射获取列表属性类型

来自分类Dev

如何使用反射递归获取类型的属性?

来自分类Dev

如何在C#中使用反射从类型和设置属性值中按名称获取属性

来自分类Dev

使用Python的asyncio按顺序获取数据

来自分类Dev

按顺序使用数组获取文件

来自分类Dev

按顺序使用数组获取文件

来自分类Dev

使用反射设置Objective-C类的属性值

来自分类Dev

如何忽略使用反射继承的类的所有隐藏属性?

来自分类Dev

序列化使用反射填充其属性的类

来自分类Dev

使用反射在谓词中引用类的属性

来自分类Dev

如何使用反射或解析读取Python类中声明成员的顺序(禁止使用元类替换)?

Related 相关文章

  1. 1

    使用反射获取类内列表属性的count属性值

  2. 2

    使用反射获取属性

  3. 3

    Java / Scala反射:按顺序获取类方法并强制对象初始化

  4. 4

    使用反射从父类获取自己的属性名称

  5. 5

    使用反射获取继承接口的类的属性

  6. 6

    如何在WinRT中使用反射获取类的静态属性

  7. 7

    使用反射获取属性引用

  8. 8

    如何使用 C# 反射获取实例化的属性或非 null 的类类型的属性

  9. 9

    如何使用反射从类中检索属性

  10. 10

    使用标签按数据属性获取元素并添加禁用的类

  11. 11

    如何在运行时使用反射从类的对象获取属性的值

  12. 12

    使用反射将类中的所有静态属性作为对象获取VB.NET

  13. 13

    使用反射从集合类获取对象

  14. 14

    使用反射,获取对象的父类/字段

  15. 15

    使用Java反射获取类数组的类型

  16. 16

    使用Java反射获取类数组的类型

  17. 17

    使用反射获取用户声明的类

  18. 18

    使用通用类型对象的反射获取属性

  19. 19

    使用反射获取列表属性类型

  20. 20

    如何使用反射递归获取类型的属性?

  21. 21

    如何在C#中使用反射从类型和设置属性值中按名称获取属性

  22. 22

    使用Python的asyncio按顺序获取数据

  23. 23

    按顺序使用数组获取文件

  24. 24

    按顺序使用数组获取文件

  25. 25

    使用反射设置Objective-C类的属性值

  26. 26

    如何忽略使用反射继承的类的所有隐藏属性?

  27. 27

    序列化使用反射填充其属性的类

  28. 28

    使用反射在谓词中引用类的属性

  29. 29

    如何使用反射或解析读取Python类中声明成员的顺序(禁止使用元类替换)?

热门标签

归档