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 成员的功能。如果您想要使用附加功能,则需要使用一种更具体的方法,例如 GetPropertiesGetFields.

由于您的 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