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? :)

Respuestas a la pregunta(6)

Su respuesta a la pregunta