我只想从一个通用属性中获取所有域对象的主标识符。 直到现在的代码:
的IEnumerable<&的PropertyInfo GT; 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(elementsToAudit中的PropertyInfo元素){字符串名称= justAuditElementProperties.PropertyType.FullName +。 + element.Name; string value = element.GetValue(?,null).ToString(); atributoNomeValor.Add(name,value);什么是的正确替代?
- 所以说每个主标识符都有 [Audite] 属性
编辑 类型?是genericObject的Property的类型。例如: Department是genericObject。 Manager是一个属性。 因此,在这种情况下,我希望 element.GetValue(?,null).ToString(); 这个元素是在Manager类中声明的:
[Audite] public string name {get;组; }解决方案 @ liho1eye,我刚刚添加了空引用验证,这对我产生了一些问题。
var propertyParent = justAuditElementProperties.GetValue(genericObject , 空值); 字符串值= propertyParent!= null? element.GetValue(propertyParent,null).ToString():;解决方案
这将是您的对象的实例
string value = element.GetValue(justAuditElementProperties.GetValue(genericObject,null),null).ToString();
I just want to get main identifier from all domain object from a generic property. The code until now:
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); } }What's the correct replacement to ?
-- So is important to say that every main identifier has [Audite] attribute
edit The type of ? is the type of a Property of genericObject. example: Department is genericObject. Manager is a property. So in this case I want element.GetValue( ? , null).ToString(); where this element is a declared in Manager class as:
[Audite] public string name { get; set; }Solution This use the solution from @liho1eye, I just added a null reference verification, that generate some problems for me.
var propertyParent = justAuditElementProperties.GetValue(genericObject, null); string value = propertyParent != null ? element.GetValue(propertyParent, null).ToString() : "";解决方案
that would be the instance of your object
string value = element.GetValue(justAuditElementProperties.GetValue(genericObject, null), null).ToString();
更多推荐
通过反射从通用对象属性获取值
发布评论