Использование 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, но можно ли это сделать? :)