1

使用 StructureMap,我们拥有所有自动注册的类型。

public class MessageRegistry : Registry
{
    public MessageRegistry(){
        Scan(x =>
             {
                 x.AssemblyContainingType(typeof (FormatHelper));
                 x.ConnectImplementationsToTypesClosing(typeof (IMessage<>));
             });
    }
}

因此,如果我们查找IMessage<Currency>,它将找到以下类型:

CurrencyMessageHandler : IMessage<Currency>
{
    public CurrencyMessageHandler(ISession instance) 
}

至于构造函数参数类型 ISession,我们喜欢它是自动连接的,但是,我们有不止 1 个实现,如 SqlSession 和 OracleSession。在这种情况下,我们希望将 SqlSession 作为构造函数参数传递。

在这种情况下如何将命名实例指定为构造函数参数?

非常感激。

4

1 回答 1

0

我遇到了同样的问题,我通过从扫描中排除类型然后自定义配置来解决它:

Scan(scan => scan.Exclude(t => t == typeof(CurrencyMessageHandler));

接着:

For<IMessage<Currency>>.Add<CurrencyMessageHandler>()
     .Ctor<ISession>.Is(a => a.TheInstanceNamed("SqlServer"));
于 2014-03-19T13:05:16.787 回答