Pregunta

Estoy usando AutoFAC 2.1.12 para manejar mi inyección de dependencia, y tengo problemas con un problema específico. Parece que no puedo resolver una dependencia de NameValuecollection.

Considere el siguiente fragmento de código:

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

Se bloqueará con una DependencyResolutionException no controlada:

Dependencia de los componentes circulares detectados: foo -> system.collections.specialized.nameValueCollection -> system.collections.specialized.nameValueCollection.

Sin embargo, si reemplazo nameValueCollection con cualquier otro tipo, el código funciona bien.

¿Estoy haciendo algo de estiramiento, ¿hay algo especial en el tipo de nombre de nombre que me falta, o es un problema con Autofac en sí?

¿Fue útil?

Solución

Esto es por diseño. Ver Autos:

AutoFAC elige automáticamente el constructor con la mayoría de los parámetros que se pueden obtener del contenedor.

Intenta registrarse NameValueCollection Como así (no estoy seguro de si esto funcionará):

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

Si eso no funciona, intente

builder.Register(c => new NameValueCollection());
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top