加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:31:43 所属栏目:百科 来源:网络整理
导读:我正在尝试使用Type对象创建泛型类的实例. 基本上,我会在运行时拥有不同类型的对象集合,因为无法确定知道它们究竟属于哪种类型,我想我将不得不使用Reflection. 我正在做的事情如下: Type elType = Type.GetType(obj);Type genType = typeof(GenericType).Ma
我正在尝试使用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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读