Использование LogManager.GetLogger с Unity

Учитывая этот класс:

class Foo
{
    readonly ILog log;

    public Foo(ILog log)
    {
        this.log = log;
    } 

    ...
}

Я хотел бы настроить Unity для внедрения ILog. Это просто:

container.RegisterInstance<ILog>(LogManager.GetLogger(typeof(XYZ)));

Но я хотел бы позвонить в UnityLogManager.GetLogger с типом разрешаемого родительского типа.

Это близко:

container.RegisterType<ILog>(new InjectionFactory((c, t, s) => LogManager.GetLogger(t)));

Ноt в этом случае разрешается тип (ILog), а не тип, для которого разрешается объект (Foo).

Я знаю, что могу это сделать:

container.RegisterType<Foo>(new InjectionFactory(c => new Foo(LogManager.GetLogger(typeof(Foo)));

Но я не хочу добавлять эту сумасшедшую декларацию каждый раз, когда регистрирую объект.

Я знаю, что это может быть сделано в Autofac, и я знаю, что Реальный ответ - это не использование Unity, но можно ли это сделать? :)

Ответы на вопрос(3)

Ваш ответ на вопрос