如果我有抽象类
public abstract class BaseClass<T>
where T: ISomeInterface
{ ... }
和两个派生类,如
public class A : BaseClass<Model1>
{ ... }
public class B : BaseClass<Model2>
{ ... }
有没有办法设置StrunctureMap来通过使用StructureMap从ISomeInterface继承的给定模型来实例化相应的类?
public class static MyFactory
{
public static BaseClass<T> Get<T>()
where T: ISomeInterface
{
// StructureMap instantiates class here
...?
}
}
MyFactory.Get<Model1>(); // returns instance of A
MyFactory.Get<Model2>(); // returns instance of B
我希望StructureMap配置适用于StructureMap自动识别的任何新类(如class C : BaseClass<Model3>
),而无需配置其他接口 - &gt;类映射
答案 0 :(得分:1)
您正在寻找的是批量注册,这是如何在StructureMap中执行此操作:
var container = new Container(cfg =>
{
cfg.Scan(scanner =>
{
scanner.AssemblyContainingType(typeof(BaseClass<>));
scanner.WithDefaultConventions();
scanner.ConnectImplementationsToTypesClosing(typeof(BaseClass<>));
});
});