VB.NET Auto实现了反射中丢失的属性

时间:2014-04-17 16:05:01

标签: vb.net

假设我有一个包含两个公共属性的类,一个定义了getter,另一个是auto实现的属性(在内部创建了getter / setter)

Public ReadOnly Property PendingAdd As String 
  Get
    Return m_pendingadd
  End Get
End Property

'Auto Implemented Property
Public AuditorName As String

使用反射并调用GetProperties()时,我只获取定义了Get的属性,不会返回自动实现的属性。 如何使用反射获取这两个属性?

Dim lobjSiteType As Type = Me.GetType()
For Each pi As System.Reflection.PropertyInfo In lobjSiteType.GetProperties(System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Instance
   'Do stuff
Next

2 个答案:

答案 0 :(得分:0)

Public AuditorName As String不是property它是一个类变量。

这是VB.NET中的一个自动属性:

Property YourProperty As String  

答案 1 :(得分:0)

如果属性至少有一个公共访问者,则该属性被视为公开反映。否则,该属性被视为私有,您必须使用BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static(在Visual Basic中,使用Or组合值)来获取它。

http://msdn.microsoft.com/en-us/library/kyaxdd3x%28v=vs.110%29.aspx