繁体   English   中英

如何通过类通用说明符使用StructureMap实例化类?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM