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

蓝莓华夫饼

我遇到一个问题,我需要从一个对象获取所有属性,然后对这些属性进行排序,然后将某些属性的值发送到另一个服务。这是代码示例:

public class Class1
{
    public string A { get; set; }
    public bool B  { get; set; }
}

public class Class2 : Class1 
{
    public new bool? B { get; set; }
    public bool C { get; set; }
}

我需要获取Class2的所有属性,但是当使用Class2.GetType()。GetProperties()时,结果包含Class2 AND Class1中的B。这引起了我的问题,因为在遍历每个属性时,我向B发送两次,一次是因为从未设置过默认值,所以默认值为false,而另一次则使用了我的服务设置的正确值。我需要结果包含Class2中的B,Class1中的A和Class2中的C,但忽略Class1中的B,因为它已被new关键字隐藏。

我尝试浏览可以使用的绑定标志,但没有帮助。我可以找到的最接近的标志是BindingFlags.DeclaredOnly标志,但是它从Class1中排除了A,因此它对我不起作用。

如果原始属性已隐藏,我将如何忽略呢?

Blorgbeard出局了

您可以使用LINQ查询来过滤掉隐藏的属性。

var allProps = typeof(Class2).GetProperties(
        BindingFlags.Instance | BindingFlags.Public
);

var thePropsYouWant = 
        from p in allProps
        group p by p.Name into g
        select g.OrderByDescending(t => t.DeclaringType == typeof(Class2)).First();

看到它在这里运行:https : //dotnetfiddle.net/V5sGIs

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用jQuery隐藏所有不包含数据类特定值的元素?

来自分类Dev

如何让所有元素都从基类继承一个特定的属性?

来自分类Dev

如何使用Groovy获取没有继承方法的类的所有方法名称?

来自分类Dev

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

来自分类Dev

如何避免使用反射访问类的私有成员?

来自分类Dev

首先忽略EF代码中所有继承对象中的属性

来自分类Dev

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

来自分类Dev

在继承类中忽略[ScriptIgnore]属性

来自分类Dev

如何在C#中使用反射获取方法的所有属性和属性数据

来自分类Dev

使用反射获取在Scala中实现特征的所有类

来自分类Dev

XML使用新属性序列化类,该属性隐藏继承的成员

来自分类Dev

如何返回继承链中所有类的属性?

来自分类Dev

如何获取从通用类继承的集合的所有类型?

来自分类Dev

如何让所有元素都从基类继承一个特定的属性?

来自分类Dev

如何使用Groovy获取没有继承方法的类的所有方法名称?

来自分类Dev

如何更改所有书签属性以使用itext继承现有pdf的缩放

来自分类Dev

首先忽略EF代码中所有继承的对象中的属性

来自分类Dev

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

来自分类Dev

IDEA(Java):如何查看从该类继承的所有类

来自分类Dev

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

来自分类Dev

如何使用反射从多层继承的类中获取受保护的朋友的财产?

来自分类Dev

使用反射测试类的所有集合属性都将被实例化

来自分类Dev

如何在类中隐藏属性继承的接口

来自分类Dev

使用 Sass 从选择器继承所有引导类

来自分类Dev

如何使用反射来处理所有类型?

来自分类Dev

如何为从父级继承的所有类共享相同的属性

来自分类Dev

如何获取属于 Python 3 中特定类的所有属性(继承的除外)的值

来自分类Dev

如何告诉“OfType()”忽略继承的类?

来自分类Dev

隐藏/封装继承类的所有属性,同时保持功能

Related 相关文章

  1. 1

    如何使用jQuery隐藏所有不包含数据类特定值的元素?

  2. 2

    如何让所有元素都从基类继承一个特定的属性?

  3. 3

    如何使用Groovy获取没有继承方法的类的所有方法名称?

  4. 4

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

  5. 5

    如何避免使用反射访问类的私有成员?

  6. 6

    首先忽略EF代码中所有继承对象中的属性

  7. 7

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

  8. 8

    在继承类中忽略[ScriptIgnore]属性

  9. 9

    如何在C#中使用反射获取方法的所有属性和属性数据

  10. 10

    使用反射获取在Scala中实现特征的所有类

  11. 11

    XML使用新属性序列化类,该属性隐藏继承的成员

  12. 12

    如何返回继承链中所有类的属性?

  13. 13

    如何获取从通用类继承的集合的所有类型?

  14. 14

    如何让所有元素都从基类继承一个特定的属性?

  15. 15

    如何使用Groovy获取没有继承方法的类的所有方法名称?

  16. 16

    如何更改所有书签属性以使用itext继承现有pdf的缩放

  17. 17

    首先忽略EF代码中所有继承的对象中的属性

  18. 18

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

  19. 19

    IDEA(Java):如何查看从该类继承的所有类

  20. 20

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

  21. 21

    如何使用反射从多层继承的类中获取受保护的朋友的财产?

  22. 22

    使用反射测试类的所有集合属性都将被实例化

  23. 23

    如何在类中隐藏属性继承的接口

  24. 24

    使用 Sass 从选择器继承所有引导类

  25. 25

    如何使用反射来处理所有类型?

  26. 26

    如何为从父级继承的所有类共享相同的属性

  27. 27

    如何获取属于 Python 3 中特定类的所有属性(继承的除外)的值

  28. 28

    如何告诉“OfType()”忽略继承的类?

  29. 29

    隐藏/封装继承类的所有属性,同时保持功能

热门标签

归档