从没有反射的反射创建的通用对象访问成员/函数?

时间:2013-03-06 15:46:43

标签: c# .net vb.net generics reflection

我有一个类型:

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

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

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

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

object objG = Activator.CreateInstance(g2);

现在我在“objG”中存储了泛型类型的对象。接下来我需要从“objG”访问一些成员。我可以使用反射来做到这一点。但有一个简单的方法吗?就像将这个对象存储在某个对象中,通过它我可以访问其成员或将类型“objG”转换为MyGenericType?

1 个答案:

答案 0 :(得分:1)

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

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

int count = listInt.Count;