gpt4 book ai didi

c# - 使用 Unity 容器解析 NLog 实例

转载 作者:行者123 更新时间:2023-12-01 18:30:22 25 4
gpt4 key购买 nike

我有以下类(class):

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();

如果 Logger 类的默认构造函数不可访问,如何使用 Unity 容器解析 LogManager.GetCurrentClassLogger()

PS:这是我第一次接触 DI 和 Unity。

最佳答案

这是我的做法:

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();

关于c# - 使用 Unity 容器解析 NLog 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40091260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com