5
は、与えられた:のはNinjectとデコレーター
public interface IBatchProcess
{
void Run();
}
と、複数の実装:
public class BatchProcessOne : IBatchProcess { ... }
public class BatchProcessTwo : IBatchProcess { ... }
public class BatchProcessThree : IBatchProcess { ... }
とトレースデコレータ:
public class BatchProcessTraceDecorator : IBatchProcess
{
private readonly IBatchProcess _inner;
public BatchProcessTraceDecorator(IBatchProcess inner)
{
_inner = inner;
}
public void Run()
{
Trace.TraceInformation("Starting batch process...");
_inner.Run();
Trace.TraceInformation("Batch process complete.");
}
}
はどのようにしてデコレータと実装のすべてをバインドすることができます私がkernel.GetAllを呼び出すと、それぞれ異なる内部のバッチプロセスを持つトレースデコレータの3つのインスタンスが得られます。
私はNinjectの傍受について知っていますし、さまざまな理由でこれに対してプロキシベースのソリューションを使用したくありません。現時点では、IBatchProcessインスタンスの活性化戦略を解決して解決する必要があるように見えますが、私はそれらをデコレートして返すことができますが、バインディングAPIで何かを逃してしまったと思っています。