Type.GetType()。GetProperties不返回带有Friend Access Modifier的属性

时间:2018-06-26 21:05:20

标签: c# .net vb.net

有人可以解释/指出一个简单的问题吗,为什么/为什么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将包含具有“公共”访问修饰符的属性的名称,并且将忽略“朋友”道具。

1 个答案:

答案 0 :(得分:2)

您必须提供适当的BindingFlags。默认情况下,GetProperties()仅显示public属性。尝试类似的东西:

// C#
GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)

' VB.NET
GetProperties(BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic)