依存性注入に 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"