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

c#泛型. ,以编程方式从读取字符串值中分配T?

发布时间:2020-12-16 00:05:47 所属栏目:百科 来源:网络整理
导读:我有两个类(即Customer和Employee)和一个通用存储库GenericRepository T哪里T:上课. 是否可以在从字符串中分配T的值时实例化新的GenericRepository实例? 像这样: string x = "Customer";var repository = new GenericRepositoryx(); (从而创建GenericRepo
我有两个类(即Customer和Employee)和一个通用存储库GenericRepository< T>哪里T:上课.

是否可以在从字符串中分配T的值时实例化新的GenericRepository实例?

像这样:

string x  = "Customer";
var repository = new GenericRepository<x>();

(从而创建GenericRepository类型的存储库实例< Customer>)

解决方法

是的,但这很尴尬.

string name = "MyNamespace.Customer";

Type targetType = Type.GetType(name);

Type genericType = typeof(GenericRepository<>).MakeGenericType( targetType );

object instance = Activator.CreateInstance(genericType);

在linqpad中,instance.Dump(); :

GenericRepository<Customer> 
UserQuery+GenericRepository`1[UserQuery+Customer]

编辑

您可以将CreateInstance结果分配给动态,而不必通过反射调用方法.

dynamic instance = Activator.CreateInstance(genericType);
instance.SomeInstanceMethod(someParameter);

(编辑:李大同)

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

    推荐文章
      热点阅读