質問

私は2.1.10リリース候補にAutofac 1.4からコードをアップグレードしています。

このような私のモジュール以前に行っ登録:

builder.RegisterCollection<IExceptionHandler>()
                .As<IEnumerable<IExceptionHandler>>()
                .FactoryScoped();
builder.Register<AspNetExceptionHandler>()
                .As<IExceptionHandler>()
                .MemberOf<IEnumerable<IExceptionHandler>>()
                .FactoryScoped();
さて、RegisterCollectionにはパラメータなしのオーバーロードがありません。私はそれに名前を割り当てることを気にしないでください。このように私のコードのルックスは2.1で、ちょうどnullに合格することのOKを想定します:

builder.RegisterCollection<IExceptionHandler>(null)
                .As<IEnumerable<IExceptionHandler>>()
                .InstancePerDependency();
builder.RegisterType<AspNetExceptionHandler>()
                .As<IExceptionHandler>()
                .MemberOf<IEnumerable<IExceptionHandler>>(null)
                .InstancePerDependency();
しかし、私は、コンパイル時に、私は.MemberOfに関する次のエラーを取得します:

  

一般的な方法を使用して   「Autofac.RegistrationExtensions.MemberOf(Autofac.Builder.RegistrationBuilder、   文字列は、「)が必要です '3' 型の引数

私は念のために、代わりにヌルのコレクション名を入れてみました、それは効果がなかった。

2.1でコレクションを登録するための適切な方法は何でしょうか。

役に立ちましたか?

解決

私の理解では、あなただけのIExceptionHandlerタイプの束を登録し、あなたがIEnumerable<IExceptionHandler>を要求するときにAutofac 2はあなたのためにすべての世話をします。

NewInV2 のページから、

builder.RegisterType<A1>().As<IA>();
builder.RegisterType<A2>().As<IA>();

var container = builder.Build();

// Contains an instance of both A1 and A2
Assert.AreEqual(2, container.Resolve<IEnumerable<IA>>().Count());
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top