1

問題があるようです - むしろ予想外です。だから私は何かばかげた/間違ったことをしているかもしれないと思います.

2 つのコンテナー スコープのサービスを次のように登録します。

builder.Register<IServiceInfo>(c => CreateServiceInfo(c)).As<IServiceInfo>();
builder.Register<IServiceInfo>(c => CreateServiceInfoSomeOther(c)).As<IServiceInfo>().Named("someOther");

今解決しようとすると

container.Resolve<IServiceInfo>()
and container.Resolve<IServiceInfo>("someOther")

私は同じインスタンスを取得します。最初の呼び出しが最初のインスタンスを返し、2 番目の呼び出しが 2 番目のインスタンスを返すことを期待します。どうしてこうなってしまうのでしょうか?

ここにアクティブな Autofac の専門家が何人かいることを願っています。これを迅速に修正するための助けをいただければ幸いです。

皆さんありがとう!

4

1 に答える 1

2

2 つのサービスが登録されている場合、名前でインスタンスを要求しない限り、最後のサービスが優先されます (2 番目のサービスに名前が付けられているかどうかは問題ではなく、そのサービスの登録です)。

".DefaultOnly()" を使用して 2 番目の登録を変更し、最初の登録が実際のデフォルトになるようにすることができます。詳細については、wiki ページを参照してください。

于 2009-10-06T21:49:42.090 に答える