Por ejemplo, he registrado la clase C1 con un parámetro en el constructor de tipo System.Type
. Tengo otra clase (C2) con parámetro inyectado de tipo C1. Y quiero recibir typeof(C2)
automáticamente en C1 constructor. ¿Es posible de alguna manera?¿Es posible obtener el tipo de contenedor en AutoFac
código Ejemplo:
public class C1
{
public C1(Type type) {}
// ...
}
public class C2
{
public C2(C1 c1) {}
// ...
}
// Registration
containerBuilder.Register(???);
containerBuilder.Register<C2>();
No, desafortunadamente, no funciona. LimitType es el tipo de componente en sí (C1 en este caso) – oryol
Ah - doh! - gracias por eso. Voy a pensar en alternativas y publicarlas aquí si encuentro alguna. –
El principal problema está en AutowiringParameter. Siempre invoca resolución para niños sin parámetros (con enumerable vacío). Creé un parámetro similar y lo registré en registration.ActivatorData.ConfiguredParameters (donde ActivatorData es ReflectionActivatorData) con valor: registration.ActivatorData.ImplementationType. Pero funciona solo para c.Resolve explícita (y con la inyección de C1 mismo obtuve 'No se encontraron constructores ...' para C1) .. –
oryol