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

时间:2015-04-14 22:56:04

标签: c# structuremap

如果我有抽象类

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;类映射

1 个答案:

答案 0 :(得分:1)

您正在寻找的是批量注册,这是如何在StructureMap中执行此操作:

var container = new Container(cfg =>
{
    cfg.Scan(scanner =>
    {
        scanner.AssemblyContainingType(typeof(BaseClass<>));
        scanner.WithDefaultConventions();
        scanner.ConnectImplementationsToTypesClosing(typeof(BaseClass<>));
    });
});