Frage

Ich verwende AutoFAC 2.1.12, um meine Abhängigkeitsinjektion zu behandeln, und habe Probleme mit einem bestimmten Problem. Ich kann eine NameValueCollection -Abhängigkeit nicht lösen.

Betrachten Sie den folgenden Code -Snippet:

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>();
    }
}

Es wird mit einer unberechtigten Abhängigkeitsempfehlung zum Absturz gebracht:

Abhängigkeit von zirkulärer Komponenten erkannt: foo -> system.collectionss.specialized.NamevalueCollection -> System.Collections.Specialized.NamevalueCollection.

Wenn ich jedoch die NameValueCollection durch einen anderen Typ ersetze, funktioniert der Code einwandfrei.

Mache ich etwas Wros, gibt es etwas Besonderes an dem NameValueCollection -Typ, den ich fehlt, oder ist dies ein Problem mit Autofac selbst?

War es hilfreich?

Lösung

Dies ist aus Design. Sehen Autoversion:

AutoFAC wählt den Konstruktor automatisch mit den meisten Parametern aus, die aus dem Container erhalten werden können.

Versuchen Sie, sich zu registrieren NameValueCollection Das (nicht sicher, ob dies funktioniert):

builder.RegisterType<NameValueCollection>().UsingConstructor();

Wenn das nicht funktioniert, versuchen Sie es

builder.Register(c => new NameValueCollection());
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top