有人可以解释/指出一个简单的问题吗,为什么/为什么Type.GetType()中的.GetProperties方法不返回带有“朋友”访问修饰符的属性?
我在这里读过“朋友”修饰符:https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/modifiers/friend,但没有提及。
不同的访问级别修饰符还有其他“隐藏”功能吗?我以为他们基本上所做的只是防止方法被其他对象/类等看到...
示例:
Dim propList As New List(Of String)
For Each p as PropertyInfo In Me.GetType().GetProperties
propList.Add(p.Name)
Next
“ Me”是一个包含常规“ public”属性的类,但继承了一个包含“ friend”属性的类。
如果运行了以上代码,则propList将包含具有“公共”访问修饰符的属性的名称,并且将忽略“朋友”道具。
答案 0 :(得分:2)
您必须提供适当的BindingFlags
。默认情况下,GetProperties()
仅显示public
属性。尝试类似的东西:
// C#
GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
' VB.NET
GetProperties(BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic)