如何在2种不同情况下使用StructureMap获取泛型对象的实例?
|
我有以下界面
public interface IBuilder<T>
{
T Create(string param);
}
与许多实现上述接口的类。其中之一是:
public class ConcreteABuilder : IBuilder<ConcreteA>
{
public ConcreteA Create(string param)
{
return new ConcreteA();
}
}
我正在使用StructureMap注册实现IBuilder<>
的所有类
Scan(x =>
{
x.TheCallingAssembly();
x.AddAllTypesOf(typeof(IBuilder<>));
});
现在我有2例
已编辑
我以System.Type的形式获取类型(在两种情况下)
情况1
在运行时,我得到任何T类型(System.Type)(例如typeof(ConcreteA)),并且我需要获取匹配的构建器实例。在这种情况下,它必须返回ConcreteABuilder实例。
情况二
在运行时,我获得了一些已实现的IBuilder的类型(System.Type)(例如typeof(ConcreteABuilder)),并且需要获取匹配的构建器实例。在这种情况下,它必须返回ConcreteABuilder实例。
如何使用StructureMap的ObjectFactory解决Case1和Case2?
谢谢
没有找到相关结果
已邀请:
2 个回复
感秆暴壳
然后向容器询问
或
会返回
...现在的问题是,由于直到运行时(用户选择了什么?)才知道类型,所以只能使用非通用版本:
要么
在您真正知道您要一个可以返回ConcreteA的IBuilder的地方
嘘崇蔡对
现在可以在运行时解析通用类型