autofacでnamevalueCollectionを解決できません
-
24-09-2019 - |
質問
Autofac 2.1.12を使用して依存関係の注入を処理しており、特定の問題に問題があります。 NameValueCollectionの依存関係を解決できないようです。
次のコードスニペットを検討してください。
class Foo
{
public Foo(NameValueCollection collection) { }
}
static class Run
{
public static void Main()
{
var builder = new ContainerBuilder();
builder.RegisterType<NameValueCollection>();
builder.RegisterType<Foo>();
using (var scope = builder.Build())
scope.Resolve<Foo>();
}
}
それは、未処理の依存関係解像度でクラッシュします:
検出された循環コンポーネントの依存関係:foo-> system.collections.specialized.nameValueCollection-> System.Collections.Specialized.NameValueCollection。
ただし、NameValueCollectionを他のタイプに置き換えると、コードは正常に動作します。
私は何かをしているのですか、私が欠けているnameValueCollectionタイプについて何か特別なことはありますか、それともAutoFac自体の問題ですか?
解決
これは設計によるものです。見る 自動操作:
AutoFacは、コンテナから取得できる最もパラメーターを持つコンストラクターを自動的に選択します。
登録してみてください NameValueCollection
そうするように(ただし、これが機能するかどうかはわかりません):
builder.RegisterType<NameValueCollection>().UsingConstructor();
それがうまくいかない場合は、試してみてください
builder.Register(c => new NameValueCollection());
所属していません StackOverflow