当前位置: 首页 > 编程语言 > C#

使用包含另一个对象数组的对象的reflection读取属性分享

时间:2023-04-10 22:42:07 C#

C#学习教程:使用包含另一个对象数组的对象的反射读取属性数组类型属性。如果我有一个名为GetMyProperties的方法,并且我确定该对象是自定义类型,我如何读取数组的属性和其中的值。IsCustomType是判断一个类型是否为自定义类型的方法。publicvoidGetMyProperties(objectobj){foreach(PropertyInfopinfoinobj.GetType().GetProperties()){if(!Helper.IsCustomType(pinfo.PropertyType)){strings=pinfo.GetValue(obj,null).ToString();propArray.Add(s);}else{objecto=pinfo.GetValue(obj,null);获取我的属性(o);场景是,我有一个ArrayClass并且ArrayClass对象有两个属性:-stringId-DeptArray[]deptsDeptArray是另一个具有2个属性的类:-stringcode-stringvalue所以这个方法获取ArrayClass的对象。我想从上到下阅读字典/列表项中的所有属性并存储名称/值对。我能够为值、自定义、枚举类型执行此操作。我被一堆东西困住了。不知道该怎么做。试试这个代码:publicstaticvoidGetMyProperties(objectobj){foreach(PropertyInfopinfoinobj.GetType().GetProperties()){如果(getMethod.ReturnType.IsArray){vararrayObject=getMethod.Invoke(obj,null);foreach((数组)arrayObject中的对象元素){foreach(element.GetType().GetProperties()中的PropertyInfoarrayObjPinfo){Console.WriteLine(arrayObjPinfo.Name+":"+arrayObjPinfo.GetGetMethod().Invoke(element,null).ToString());}}}}}我测试了这段代码,它用正确的反射解析了数组。您需要检索属性值对象,然后对其调用GetType()。然后你可以这样做:vartype=pinfo.GetGetMethod().Invoke(obj,newobject[0]).GetType();if(type.IsArray){数组a=(Array)obj;foreach(objectarrayValina){//现在反映arrayValvarelementType=arrayVal.GetType();仅供参考-我从递归对象格式化方法中提取了这段代码(我现在将使用JSON序列化)。以上就是C#学习教程:利用一个对象包含另一个对象数组的反射读取属性分享的全部内容。如果对大家有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络合集,不代表立场,如涉及侵权,请点击右转联系管理员删除。如需转载请注明出处: