c# – 使用包含其他对象数组的对象的反射读取属性

c# – 使用包含其他对象数组的对象的反射读取属性,第1张

概述如何在c#中使用反射来读取包含数组类型元素的对象的属性.如果我有一个名为GetMyProperties的方法,我确定该对象是一个自定义类型,那么如何读取数组的属性和其中的值. IsCustomType是确定类型是否为自定义类型的方法. public void GetMyProperties(object obj) { foreach (PropertyInfo pinfo in obj 如何在c#中使用反射来读取包含数组类型元素的对象的属性.如果我有一个名为GetMyPropertIEs的方法,我确定该对象是一个自定义类型,那么如何读取数组的属性和其中的值. IsCustomType是确定类型是否为自定义类型的方法.
public voID GetMyPropertIEs(object obj) {     foreach (PropertyInfo pinfo in obj.GetType().GetPropertIEs())     {         if (!Helper.IsCustomType(pinfo.PropertyType))         {             string s = pinfo.GetValue(obj,null).ToString();             propArray.Add(s);         }         else         {             object o = pinfo.GetValue(obj,null);             GetMyPropertIEs(o);         }     } }

场景是,我有一个ArrayClass的对象,ArrayClass有两个属性:

-string ID-DeptArray[] depts

DeptArray是另一个有2个属性的类:

-string code -string value

所以,这个方法得到一个ArrayClass的对象.我想从字典/列表项中读取所有属性,从顶到底,存储名称/值对.我能够为value,custom,enum类型做.我被卡住了数组的对象.不知道该怎么做

解决方法 尝试这段代码:
public static voID GetMyPropertIEs(object obj){  foreach (PropertyInfo pinfo in obj.GetType().GetPropertIEs())  {    var getmethod = pinfo.Getgetmethod();    if (getmethod.ReturnType.IsArray)    {      var arrayObject = getmethod.Invoke(obj,null);      foreach (object element in (Array) arrayObject)      {        foreach (PropertyInfo arrayObjPinfo in element.GetType().GetPropertIEs())        {          Console.Writeline(arrayObjPinfo.name + ":" + arrayObjPinfo.Getgetmethod().Invoke(element,null).ToString());        }      }    }  }}

我已经测试了这个代码,它通过反射来正确地解析了数组.

总结

以上是内存溢出为你收集整理的c# – 使用包含其他对象数组的对象的反射读取属性全部内容,希望文章能够帮你解决c# – 使用包含其他对象数组的对象的反射读取属性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1262677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存