使用统一容器解析NLog实例

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。

Bud*_*ril 5

这是我的工作方式:

            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)