Type.GetMembers
возвращает список MemberInfo
объектов, по одному на каждого члена типа.Однако не все члены имеют значения.Поля и свойства имеют значения, поэтому, если вы получите список только полей или только свойств, вы можете запросить их значения.Но такие вещи, как методы, не имеют значения.Вы можете вызывать их и читать их возвращаемые значения, но это отличается от чтения значения свойства или поля.
Другими словами, вы должны работать по-разному с каждым участником, в зависимости от того, какой он член.Поскольку MemberInfo
является наименьшим общим знаменателем, он не обладает какой-либо функциональностью, которая работает только на некоторых членах.Если вам нужны дополнительные функциональные возможности, вам необходимо использовать один из более конкретных методов, таких как GetProperties
или GetFields
.
Поскольку ваш класс содержит свойства, вы, вероятно, захотите получить списоксвойства:
Public Class Person
Public Property Name As String
Public Property Age As Integer
Public Overrides Function ToString() As String
Dim bigStr As String = ""
For Each p As PropertyInfo In Me.GetType().GetProperties()
bigStr &= p.Name & " " & p.GetValue(Me)?.ToString()
Next
Return bigStr
End Function
End Class