创建一种方法来遍历对象特性
本文关键字:遍历 对象 方法 一种 创建 | 更新日期: 2023-09-27 18:27:01
有没有办法编写代码来做到这一点:
MyObject中的Foreach属性;检查属性上是否有DataMember Validator。IsRequired=true;
[DataMember(Order = 2, IsRequired=true)]
public string AddressLine1 { get; set; }
[DataMember(Order = 3)]
public string AddressLine2 { get; set; }
如果是,请检查对象中是否有notNull或空值;
总之,我创建了一个名为CheckForRequiredFields(object o)的方法
在这种情况下,传递一个具有上面列出的属性的"Address"对象。代码Sees第一个属性的RequiredField=true,因此它检查传递给它的Address对象是否具有AddressLine1 的值
类似的东西(来自内存,因此无法保证正确性):
foreach(var propInfo in o.GetType().GetProperties())
{
var dmAttr = propInfo.GetCustomAttributes(typeof(DataMemberAttribute), false).FirstOrDefault() as DataMemberAttribute;
if (dmAttr == null)
continue;
object propValue = propInfo.GetValue(o, null);
if (dmAttr.IsRequired && propValue == null)
// It is required but does not have a value... do something about it here
}
是的,有。看看反射。您可以接受您的类型,对其调用Type.GetProperties()
,并为每个属性检索PropertyInfo
。
从PropertyInfo
可以获得其属性(使用GetCustomAttributes
方法),并查找DataMember
属性。如果您找到一个,请检查其IsRequired
。