我有一个通用界面,比如IGeneric
,我想根据string
的类型动态解析。为了更清楚,我可以解决这样的依赖:
container.Resolve<IGeneric<AType>>();
但我的问题是如何解决这个问题:
var type = "AType";
除了(更好)注册可用于代替AType
作为命名实例的每个可能的类之外,还有什么办法吗?
答案 0 :(得分:1)
使用接受Type
。{/ p>的Resolve原型
Type type = System.Type.GetType("AType");
var instance = container.Resolve(type);
或者(不确定您想要哪一个)解析IGeneric<Atype>
使用:
Type genericType = typeof(IGeneric<>);
Type specificType = genericType.MakeGenericType(new [] {Type.GetType("AType")});
var instance = container.Resolve(specificType );