5

AutoFac を使用する場合、 を使用.RegisterTypeしてクラスをインターフェイスに関連付けることができますが、使用することも.Registerできます (これにより、ラムダを介してコンストラクター引数を指定できます)。

パラメーターなしのコンストラクターを持つクラスの場合、これら 2 つのメソッドは同等ですか?

var builder = new Autofac.ContainerBuilder();

builder.RegisterType<MyClass>().As<IMyInterface>();
builder.Register(x => new MyClass()).As<IMyInterface>();

使用が望ましいシナリオはあります.RegisterTypeか?

4

1 に答える 1

7

クラスに定義されたコンストラクターが 1 つしかないと仮定すると、それらは機能的に同等であるはずです。

内部的な違いの 1 つRegisterTypeは、リフレクションを使用しRegisterて、ラムダで必要なすべての情報を提供している間に使用するコンストラクターを決定することです。

于 2012-12-03T21:45:27.443 に答える