c# – 使用Type对象创建泛型

前端之家收集整理的这篇文章主要介绍了c# – 使用Type对象创建泛型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用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.GetMethodMethodBase.Invoke.

猜你在找的C#相关文章