Utilizando LogManager.GetLogger con Unity
Dada esta clase:
class Foo
{
readonly ILog log;
public Foo(ILog log)
{
this.log = log;
}
...
}
Me gustaría configurar Unity para inyectar ILog. Eso es fácil
container.RegisterInstance<ILog>(LogManager.GetLogger(typeof(XYZ)));
Pero me gustaría hacer que Unity llame aLogManager.GetLogger
con el tipo del tipo principal que se está resolviendo.
Esto está cerca:
container.RegisterType<ILog>(new InjectionFactory((c, t, s) => LogManager.GetLogger(t)));
Perot
en este caso es el tipo que se está resolviendo ILog
), no el tipo para el que se está resolviendo el objeto Foo
).
Sé que puedo hacerlo
container.RegisterType<Foo>(new InjectionFactory(c => new Foo(LogManager.GetLogger(typeof(Foo)));
Pero no quiero tener que agregar esa declaración loca cada vez que registro un objeto.
Sé que esto se puede hacer en Autofac, y sé que la respuesta real es no usar Unity en primer lugar, pero ¿se puede hacer esto? :)