[英]How to get value of property from object of class at runtime using reflection
[英]Get value from a generic object property by reflection
我只想从通用属性的所有域对象中获取主要标识符。
到目前为止的代码:
IEnumerable<PropertyInfo> customProperties = genericObject.GetType().GetProperties(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
foreach (PropertyInfo justAuditElementProperties in customProperties) {
IEnumerable<PropertyInfo> elementsToAudit = justAuditElementProperties.PropertyType.GetProperties().Where(p => Attribute.IsDefined(p, typeof (AuditeAttribute)));
foreach (PropertyInfo element in elementsToAudit) {
string name = justAuditElementProperties.PropertyType.FullName + "." + element.Name;
string value = element.GetValue( ? , null).ToString();
atributoNomeValor.Add(name, value);
}
}
正确的替代品是什么?
-因此重要的是要说每个主要标识符都具有[Audite]
属性
编辑
的类型 是genericObject的属性的类型。 例:
部门是genericObject。
经理是财产。 因此,在这种情况下,我需要element.GetValue( ? , null).ToString();
该元素在Manager类中声明为:
[Audite]
public string name { get; set; }
解
这使用@ liho1eye的解决方案,我刚刚添加了一个空引用验证,这给我带来了一些问题。
var propertyParent = justAuditElementProperties.GetValue(genericObject, null);
string value = propertyParent != null ? element.GetValue(propertyParent, null).ToString() : "";
那将是您的对象的实例
string value = element.GetValue(justAuditElementProperties.GetValue(genericObject, null), null).ToString();
应该是您的genericObject
。
据我所知,您仅通过genericObject
的属性进行迭代。 识别具有“ AuditeAttribute”的属性,然后获取其值。
有关完整的详细信息,请参见MSDN 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.