vb.net 列出 class 个具有值的属性
vb.net list class properties with values
我有一个 class,我想做一个自定义 'toString' 函数;
Public Class Person
public property Name as string
public property Age as interger
public Overrides Function ToString() as string
dim BigStr as string = ""
for each Member as MemberInfo in Me.GetType.GetMembers
bigst += Member.Name & " " & [thevalue of this instance]
next
return BigStr
end function
end class
我希望它自动显示具有当前实例值的所有属性。但是我不知道如何在不专门输入的情况下获取 属性 的值。有动态的方式吗?
Type.GetMembers
returns 一个 MemberInfo
对象的列表,每个类型的成员一个。然而,并非所有成员都有价值观。字段和属性都有值,因此如果您只获得字段或属性的列表,您可以向它们询问它们的值。但是方法之类的东西没有价值。您可以调用它们并读取它们的 return 值,但这不同于读取 属性 或字段的值。
换句话说,您必须以不同的方式与每个成员一起工作,这取决于它是什么类型的成员。由于 MemberInfo
是最小公分母,它没有任何仅适用于 some 成员的功能。如果您想要使用附加功能,则需要使用一种更具体的方法,例如 GetProperties
或 GetFields
.
由于您的 class 包含属性,您可能想要获取属性列表:
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
我有一个 class,我想做一个自定义 'toString' 函数;
Public Class Person
public property Name as string
public property Age as interger
public Overrides Function ToString() as string
dim BigStr as string = ""
for each Member as MemberInfo in Me.GetType.GetMembers
bigst += Member.Name & " " & [thevalue of this instance]
next
return BigStr
end function
end class
我希望它自动显示具有当前实例值的所有属性。但是我不知道如何在不专门输入的情况下获取 属性 的值。有动态的方式吗?
Type.GetMembers
returns 一个 MemberInfo
对象的列表,每个类型的成员一个。然而,并非所有成员都有价值观。字段和属性都有值,因此如果您只获得字段或属性的列表,您可以向它们询问它们的值。但是方法之类的东西没有价值。您可以调用它们并读取它们的 return 值,但这不同于读取 属性 或字段的值。
换句话说,您必须以不同的方式与每个成员一起工作,这取决于它是什么类型的成员。由于 MemberInfo
是最小公分母,它没有任何仅适用于 some 成员的功能。如果您想要使用附加功能,则需要使用一种更具体的方法,例如 GetProperties
或 GetFields
.
由于您的 class 包含属性,您可能想要获取属性列表:
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