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# – 使用包含其他对象数组的对象的反射读取属性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)