NAMEVALUECollection mit AutoFAC kann nicht behoben werden
-
24-09-2019 - |
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?
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());