0

依存性注入に Unity を使用しています。ロガーに依存するすべてのクラスにロガーを注入できるようにしたいと考えています。Type私の問題は、ロガーがそれを参照しているオブジェクトのを必要とするコンストラクター引数を持っていることです。Ninject を使用していた場合は、Logging 拡張機能を使用します。Unity で同じことを行うにはどうすればよいですか?

ここに、私が何を意味するかを正確に示すサンプルコードを示します。

public class Service1:IService1
{
    private ILog _log;
    public Service1(ILog log)
    {
        _log = log;
    }

    public void DoSomething()
    {
        _log.Print();
    }
}

public class Service2:IService2
{
    private ILog _log;
    public Service2(ILog log)
    {
        _log = log;
    }

    public void DoSomething()
    {
        _log.Print();
    }
}

public class Log:ILog
{
    private Type _ownerType;
    public Log(Type ownerType)
    {
        _ownerType = ownerType;
    }

    public void Print()
    {
        Console.Writeline("Owner:  {0}", _ownerType.Name);
    }
}

unityContainer.RegisterType<IService1, Service1>();
unityContainer.RegisterType<IService2, Service2>();
unityContainer.RegisterType<ILog, Log>()  // This is wrong

var s1 = unityContainer.Resolve<IService1>();
var s2 = unityContainer.Resolve<IService2>();

s1.DoSomething(); // Should print "Owner:  Service1"
s2.DoSomething(); // Should print "Owner:  Service2"
4

2 に答える 2

0

参考になると思いますが、私は Unity を使用したことがないので..

http://davidkeaveny.blogspot.ru/2011/03/unity-and-log4net.html

うまくいけば、それはあなたを助けるでしょう。

于 2013-08-16T04:21:00.380 に答える