0
私は2つのインターフェイスとILogger<T>
を持っています。後者は前者から継承しています。そして、いくつかのようなクラスHandler
:汎用オブジェクトを非ジェネリックパラメータとして使用するオートファック
public class Handler
{
public Handler(ILogger logger)
{
}
}
と私は解決しILogger<T>
の代わりに、に渡すAutofac
をお伝えしたいと思います。とILogger<T>
の両方のインスタンスを解決できると仮定して、ここでは問題はありません。
私は私がやってインスタンスを渡すことができます知っている:
builder.RegisterType<Handler>()
.AsSelf() // assume any other suplerfluos config is also done
.WithParameter(...);
あり3つの過負荷(少なくともAutofac
の私のバージョンの)が、それらのすべての3が何とかパラメータとしてインスタンスを使用して暗示します。これを行うにはいくつかの方法があります.WithParameter(typeOf(ILogger<Handler>))
:
私のような何かをしたいですか?
これは実行時にどのように動作すると思いますか?あなたは確かにコンパイルするようなものを書くことはできませんでしたが、なぜランタイムが何か異なった振る舞いをすると期待していましたか? –
ハンドラーインスタンスを手動で作成する場合、 'var handler = new Handler(new DefaultLogger()); 'を実行しても問題ありません。私はハンドファラーを頼むときはいつでも、私のためにオートファックをする方法があると思った。 –
Luiso
'ILogger'を' DefaultLogger() 'にマップするのはなぜですか?または、 'Handler2'に注入する必要がある' ILogger'に対して、 'DefaultLogger ()'でしょうか? –