用统一容器解析NLog实例
本文关键字:NLog 实例 | 更新日期: 2023-09-27 18:13:27
我有以下类:
public class TestInjection
{
private ILogger logger;
public TestInjection(ILogger logger)
{
this.logger = logger;
}
public void Process()
{
try
{
int zero = 0;
int result = 5 / zero;
}
catch (DivideByZeroException ex)
{
logger.Log(LogLevel.Error, "test message", ex);
Console.WriteLine("logged message from class");
}
}
}
在我的Program.cs
中我有代码:
IUnityContainer container = new UnityContainer();
container.RegisterType<TestInjection>();
var myTestClass = container.Resolve<TestInjection>(new ResolverOverride[] { new ParameterOverride("logger", LogManager.GetCurrentClassLogger()) });
myTestClass.Process();
如何解决LogManager.GetCurrentClassLogger()
与统一容器,如果Logger
类的默认构造函数它是不可访问的?
我是这样做的:
IUnityContainer container = new UnityContainer();
container.RegisterType<ILogger>(
new InjectionFactory(l => LogManager.GetCurrentClassLogger()));
container.RegisterType<TestInjection>();
var myTestClass = container.Resolve<TestInjection>(
new ResolverOverride[]
{
new ParameterOverride("logger", container.Resolve<ILogger>())
});
myTestClass.Process();