質問

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());
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top