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

马赫什

我有这样的班级结构,

 public class a
       Protected Friend Property ID() As Integer
        Get
            Return _Id
        End Get
        Set(ByVal Value As Integer)
            _Id = Value
        End Set
    End Property 
    //some other properties and methods
 End class


 public class b 
       Inherits a
        //some properties and methods
 End Class


 public class c 
       Inherits b
        //some properties and methods
 End Class

 public class d 
       Inherits c
        //some properties and methods

       Dim obj as D = new D();
       Dim data = obj.GetType().GetProperties(/*I have tried all binding flags here*/) 

 End Class

我想从的对象访问ID属性直到现在,我用谷歌搜索并从堆栈中找到了很多答案,但是这些答案中的任何一个都没有给我我想要的东西。class aClass D

当我使用类似的代码时,我会获得该属性,

 'obj.GetType().BaseType.BaseType.BaseType.GetProperties()'

但是重复性BaseType属性的使用看起来不太好,而且如果将来在两者之间添加更多继承,也可能会引起问题。所以有什么办法可以避免这种情况,并得到我想要的。如有任何混淆,请随时发表评论。

PS-我已经尝试过很多有关此问题的答案,但无法获得我想要的。如果您知道C#的方式,那么也建议我将其转换为VB。

Damien_The_Unbeliever

我创建了一个Subd

Sub DoStuff()
    Dim obj As d = New d()
    Dim data = obj.GetType().GetProperties(BindingFlags.Instance Or BindingFlags.NonPublic)
End Sub

当我跨过这data条线时,data将其设置为包含单个属性的数组-类中EntityID属性a

或者,如果我们不想搜索该数组,则可以直接转到该属性:

Dim eid = obj.GetType().GetProperty("EntityID", _
                                    BindingFlags.Instance Or BindingFlags.NonPublic)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用反射读取类中定义的受保护注释

来自分类Dev

继承和朋友功能,从基类访问受保护的成员

来自分类Dev

如何在类中使用受保护的类型继承?

来自分类Dev

为什么C ++中的派生类的朋友不能使用受保护的成员?

来自分类Dev

如何通过反射获取java中受保护方法的替代版本?

来自分类Dev

如何通过反射获取受保护的内部方法

来自分类Dev

在继承的类中受保护的公共虚拟方法被重写

来自分类Dev

PhpDoc:受保护的财产

来自分类Dev

访问受保护的财产

来自分类Dev

如何使用反射从字段/类中获取对象?

来自分类Dev

受保护的继承-基类构造函数是受保护的还是继承类构造函数是受保护的?

来自分类Dev

C ++中受朋友保护的方法

来自分类Dev

C ++中受朋友保护的方法

来自分类Dev

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

来自分类Dev

继承类的受保护静态成员

来自分类Dev

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

来自分类Dev

从基类的静态模板方法中调用继承类的受保护ctor失败

来自分类Dev

为什么继承的类的实例无法访问不同包中基类的受保护成员

来自分类Dev

为什么继承的类的实例无法访问不同包中基类的受保护成员

来自分类Dev

Fortran 2003/2008中的受保护继承

来自分类Dev

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

来自分类Dev

是否可以在继承的类中公开具有相同名称的受保护常量?

来自分类Dev

为什么我的类朋友功能不能使用名称空间访问受保护的成员?

来自分类Dev

如何从朋友函数访问受保护的构造函数?

来自分类Dev

通过.net反射仅获取受保护的成员

来自分类Dev

如何使“孙子”类中的受保护成员无法访问

来自分类Dev

ES6类中的受保护属性(使用Symbols?)

来自分类Dev

使用反射获取私有财产的私有财产

来自分类Dev

如何在PHP中获取对象的受保护属性值

Related 相关文章

  1. 1

    使用反射读取类中定义的受保护注释

  2. 2

    继承和朋友功能,从基类访问受保护的成员

  3. 3

    如何在类中使用受保护的类型继承?

  4. 4

    为什么C ++中的派生类的朋友不能使用受保护的成员?

  5. 5

    如何通过反射获取java中受保护方法的替代版本?

  6. 6

    如何通过反射获取受保护的内部方法

  7. 7

    在继承的类中受保护的公共虚拟方法被重写

  8. 8

    PhpDoc:受保护的财产

  9. 9

    访问受保护的财产

  10. 10

    如何使用反射从字段/类中获取对象?

  11. 11

    受保护的继承-基类构造函数是受保护的还是继承类构造函数是受保护的?

  12. 12

    C ++中受朋友保护的方法

  13. 13

    C ++中受朋友保护的方法

  14. 14

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

  15. 15

    继承类的受保护静态成员

  16. 16

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

  17. 17

    从基类的静态模板方法中调用继承类的受保护ctor失败

  18. 18

    为什么继承的类的实例无法访问不同包中基类的受保护成员

  19. 19

    为什么继承的类的实例无法访问不同包中基类的受保护成员

  20. 20

    Fortran 2003/2008中的受保护继承

  21. 21

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

  22. 22

    是否可以在继承的类中公开具有相同名称的受保护常量?

  23. 23

    为什么我的类朋友功能不能使用名称空间访问受保护的成员?

  24. 24

    如何从朋友函数访问受保护的构造函数?

  25. 25

    通过.net反射仅获取受保护的成员

  26. 26

    如何使“孙子”类中的受保护成员无法访问

  27. 27

    ES6类中的受保护属性(使用Symbols?)

  28. 28

    使用反射获取私有财产的私有财产

  29. 29

    如何在PHP中获取对象的受保护属性值

热门标签

归档