我正在尝试使用Type对象创建泛型类的实例.
基本上,我会在运行时拥有不同类型的对象集合,因为无法确定知道它们究竟属于哪种类型,我想我将不得不使用Reflection.
我正在做的事情如下:
Type elType = Type.GetType(obj); Type genType = typeof(GenericType<>).MakeGenericType(elType); object obj = Activator.CreateInstance(genType);
哪个好,好. ^ ___ ^
问题是,我想访问我的GenericType<>的方法.实例,我不能,因为它被键入为对象类.我找不到将obj转换为特定的GenericType<>的方法,因为这首先是问题(即,我不能放入像:)这样的东西
((GenericType<elType>)obj).MyMethod();
应该怎样解决这个问题?
非常感谢! ^ ___ ^
解决方法
您必须继续使用Reflection来调用实际方法:
// Your code Type elType = Type.GetType(obj); Type genType = typeof(GenericType<>).MakeGenericType(elType); object obj = Activator.CreateInstance(genType); // To execute the method MethodInfo method = genType.GetMethod("MyMethod",BindingFlags.Instance | BindingFlags.Public); method.Invoke(obj,null);
有关更多信息,请参阅Type.GetMethod和MethodBase.Invoke.