vzw*_*ick 3 c# generics instantiation
我有两个类(即Customer和Employee)和一个通用存储库GenericRepository<T> where T : class.
是否可以在从字符串中分配T的值时实例化新的GenericRepository实例?
像这样:
string x = "Customer";
var repository = new GenericRepository<x>();
Run Code Online (Sandbox Code Playgroud)
(从而创建类型的存储库实例GenericRepository<Customer>)
asa*_*yer 11
是的,但这很尴尬.
string name = "MyNamespace.Customer";
Type targetType = Type.GetType(name);
Type genericType = typeof(GenericRepository<>).MakeGenericType( targetType );
object instance = Activator.CreateInstance(genericType);
Run Code Online (Sandbox Code Playgroud)
在linqpad中,instance.Dump();:
GenericRepository<Customer>
UserQuery+GenericRepository`1[UserQuery+Customer]
Run Code Online (Sandbox Code Playgroud)
您可以将CreateInstance结果分配给动态,而不必通过反射调用方法.
dynamic instance = Activator.CreateInstance(genericType);
instance.SomeInstanceMethod(someParameter);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7137 次 |
| 最近记录: |