Bud*_*ril 2 c# dependency-injection unity-container
我有以下课程:
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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我Program.cs的代码中:
IUnityContainer container = new UnityContainer();
container.RegisterType<TestInjection>();
var myTestClass = container.Resolve<TestInjection>(new ResolverOverride[] { new ParameterOverride("logger", LogManager.GetCurrentClassLogger()) });
myTestClass.Process();
Run Code Online (Sandbox Code Playgroud)
LogManager.GetCurrentClassLogger()如果Logger无法访问该类的默认构造函数,如何使用unity容器进行解析?
谢谢。
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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1527 次 |
| 最近记录: |