[英]How to instantiate class with StructureMap by the class generic specifier?
如果我有抽象课
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配置对于任何新的此类类(如class C : BaseClass<Model3>
)都能class C : BaseClass<Model3>
以使其能够被StructureMap自动识别,而无需配置其他interface-> class映射
您要查找的内容称为批量注册,这是在StructureMap中执行的操作:
var container = new Container(cfg =>
{
cfg.Scan(scanner =>
{
scanner.AssemblyContainingType(typeof(BaseClass<>));
scanner.WithDefaultConventions();
scanner.ConnectImplementationsToTypesClosing(typeof(BaseClass<>));
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.