[英]In C#, how do you count the number of properties contained within an expression body output function using reflection?
[英]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.