vb.net 列出具有值的类属性

标签 vb.net class properties tostring

我有一个类,我想做一个自定义的“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 返回一个 MemberInfo 对象列表,每个类型的成员一个。然而,并非所有成员都有值(value)观。字段和属性都有值,因此如果您只获得字段或属性的列表,您可以向它们询问它们的值。但是方法之类的东西没有值(value)。您可以调用它们并读取它们的返回值,但这与读取属性或字段的值不同。

换句话说,您必须根据每个成员的类型以不同方式处理每个成员。由于 MemberInfo 是最小的公分母,它没有任何仅适用于某些 成员的功能。如果您想要使用附加功能,则需要使用一种更具体的方法,例如 GetPropertiesGetFields

由于您的类包含属性,您可能想要获取属性列表:

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

关于vb.net 列出具有值的类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54927675/

相关文章:

java - 如何访问位于项目文件夹外部和项目类路径外部的 .properties 文件?

vb.net - 使用 Async-await 时 UI 卡住

.NET 和 MySql 参数,AddWithValue NULL 变量,如何避免检查空值

c# - 如何制作自动调节控件?

python - 为什么protobuf生成带有__metaclass__属性的python类?

ios - 将 JSON 字符串解析为基于 iOS 类的对象

jquery - 删除/添加链接类 onclick

c# - 使用反射查找通用列表元素的继承属性

vb.net - 计算 ListBox 中项目的总和 - Visual Basic

javascript - typescript :有没有像联合类型一样工作的东西,除了我们可以访问并非所有联合类型都通用的属性?