怎么通过反射获得实体类中List类型的对象的各个属性?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么通过反射获得实体类中List类型的对象的各个属性?相关的知识,希望对你有一定的参考价值。

参考技术A 你是要List类型对象的属性还是List<T中T对象的属性,如果是前者,和一般对象的属性获取没有不同,如果是后者,方法上稍后不同,特别是当List中没有任何元素时,没法先获取一个元素来反射。本回答被提问者采纳 参考技术B 你是要List类型对象的属性还是List<T中T对象的属性,如果是前者,和一般对象的属性获取没有不同,如果是后者,方法上稍后不同,特别是当List中没有任何元素时,没法先获取一个元素来反射。

如何反射获取List<T> 中泛型的类型

参考技术A Class1s xx = new Class1s();
var inters = xx.GetType().GetInterfaces();//获取所有继承的泛型类型
if (inters.Length > 0)

var ts = inters[0].GetGenericArguments();//获取第一个泛型的形参类型数组
if (ts.Length > 0)

var res = ts[0];//获取到Class1
//todo:后续代码


已知类型Class1,获取它的属性集合,你上面的代码已经有了。

有点要注意,在获取第一个泛型的形参类型那里,不用的类型继承的泛型接口也不同,例如,可能是IList、IList、Dictionary的,所以不一定是第一个泛型就可以获取出T。这里应该还是有根据实际情况做相应处理的过程。

另外,如果已知是List的话,有一个很简单的方法:
xx.GetType().GetMethod("Find").ReturnType。就可以返回Class1的Type了,这种就很有针对性,专门针对List的T Find()函数设计。获得Find函数的返回类型即可。

希望能给你启示。

以上是关于怎么通过反射获得实体类中List类型的对象的各个属性?的主要内容,如果未能解决你的问题,请参考以下文章

Python自省与反射

javaWeb中使用反射机制为数据库中表生成的实体类的的对象赋值?

如何获得实体类里属性本身?

C++遍历获得一个类的所有属性名,对该类的实例的所有属性的值 ...~~

在JAVA中,怎么利用反射获取一个方法?

java,关于利用反射自动设置List<T>中T的类型