vb.net - vb.net 列出具有值的类属性
问题描述
我有一堂课,我想做一个自定义的“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
对象列表,每个类型的成员一个。但是,并非所有成员都有价值。字段和属性都有值,因此如果您只获得字段或属性的列表,您可以询问它们的值。但是方法之类的东西没有价值。您可能能够调用它们并读取它们的返回值,但这与读取属性或字段的值不同。
换句话说,你必须对每个成员进行不同的工作,这取决于它是什么类型的成员。由于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
推荐阅读
- botframework - Microsoft Bot Framework 响应 Slack Block Kit UI 操作按钮
- epplus - 使用 EPPlus 和 MovetoStart 组添加选项卡前两个选项卡
- arduino - ADS1015 最大样品
- netsuite - CASE WHEN 文本字段不等于值
- kubernetes - 是否建议在 helm 之后使用 kustomize?
- swift - 具有 DisplayLink 意外行为的核心图形
- c# - 如何动态更改字体大小以使文本套件的体积变为矩形大小?
- javascript - 使用 JavaScript Ajax 传递到 PHP 以发送电子邮件时出现乱码的日语 (mojibake) 字符
- html - 为什么电子邮件 html 不能显示 url 图片
- excel - 根据条件从列中复制所有数据