如何计算一个类中的属性数?

时间:2014-10-21 12:18:51

标签: .net vb.net

我们正在处理一项网络服务,该网络服务需要向其发布5个字符串才能打印地址标签。在我们的服务器上,数据保存在一个数组中,以便在发送到Web服务之前对其进行处理。

我们有一个方法可以将multi0line TextBox字符串(邮政地址)转换为正确的格式,如下所示:

Public Class PostageLabel
    Public Property Address1 As String
    Public Property Address2 As String
    Public Property Address3 As String
    Public Property Address4 As String
    Public Property Address5 As String
End Class

Public Shared Function ConvertAddress(address As String) As PostageLabel
    Dim labelFieldsAvailable As Integer = 5 
    ' ...
End Function

labelFieldsAvailable变量只是标签上Address字段的数量(即Public String类中存在的PostageLabel属性的数量)。

正如您所看到的,我们在功能中手动设置此功能并不是很重要,但我想知道是否可以自动发现此值并避免潜在的错误(例如,如果标签格式永远变成6个领域)?

Dim labelFieldsAvailable As Integer = (Some wizardry to count property fields)

1 个答案:

答案 0 :(得分:2)

您可以使用反射来使用GetProperties获取PropertyInfo。然后只需返回数组的Length

Dim l As Integer = GetType(PostageLabel).GetProperties().Length

或者,正如James Thorpe建议:为了完全安全,您可以使用lamdba表达式检查属性的名称是否以Address开头:

Dim l as Integer = GetType(PostageLabel).GetProperties().Count(Function(p) p.Name.StartsWith("Address"))