访问通过反射创建的泛型对象的成员/函数,而不使用反射
本文关键字:反射 函数 对象 创建 泛型 访问 成员 | 更新日期: 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;