gpt4 book ai didi

c# - 如何使用反射从多级继承类中获取 protected friend 属性?

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:20 24 4
gpt4 key购买 nike

我的类结构有点像这样,

 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

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

当我使用像这样的代码时,我得到了那个属性,

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

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

P.S-我已经尝试了很多关于这个的堆栈答案,但无法得到我想要的。如果您知道 C# 方式,那么也请建议我将其转换为 VB。

最佳答案

我创建了一个 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 的属性(property)类。

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

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

关于c# - 如何使用反射从多级继承类中获取 protected friend 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35427041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com