访问通过反射创建的泛型对象的成员/函数,而不使用反射

本文关键字:反射 函数 对象 创建 泛型 访问 成员 | 更新日期: 2023-09-27 18:02:29

我有一个可用的a类型:

Type arg1 = GetGenericType(3); // based on the number passed a type is received.

我想创建一个泛型类型的对象:MyGenericType<T>,所以我这样做:

Type g1 = typeof(MyGenericType<>);
Type g2 = g1.MakeGenericType(arg1);

现在我在"g2"中存储了一个类型为MyGenericType<T>的类型,这里"T"的类型为arg1。接下来,创建如下类型的实例:

object objG = Activator.CreateInstance(g2);

现在我有泛型类型的对象存储在"objG"。接下来,我需要从"objG"访问一些成员。我可以用反射来做。但是有简单的方法吗?比如将这个对象存储在一些对象中,通过这些对象我可以访问它的成员或将"objG"类型转换为MyGenericType ?

访问通过反射创建的泛型对象的成员/函数,而不使用反射

是的,你可以通过利用dynamic来做到这一点,下面是一个简单的例子:

dynamic listInt = Activator.CreateInstance(typeof (List<int>));
listInt.Add(3);
int count = listInt.Count;