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 に関しては、自動配線されることを好みますが、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 に答える