繁体   English   中英

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

[英]How to count the number of properties in a class?

我们正在使用一个Web服务,该服务要求将5个字符串张贴到该Web服务上以打印地址标签。 在我们的服务器上,数据保存在一个数组中,以便可以在将数据发送到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字段的数量(即PostageLabel类中存在的Public String Properties的数量)。

如您所见,我们在功能中手动设置了这个功能,没什么大不了的,但是我想知道是否可以自动发现该值并避免潜在的错误(例如,标签格式是否更改为6个字段) ?

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

您可以使用反射来通过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"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM