通过反射从通用对象属性获取值

编程入门 行业动态 更新时间:2024-10-25 02:19:41
本文介绍了通过反射从通用对象属性获取值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我只想从一个通用属性中获取所有域对象的主标识符。 直到现在的代码:

的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();

更多推荐

通过反射从通用对象属性获取值

本文发布于:2023-11-12 11:46:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1581414.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:反射   属性   对象

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!