与えられた:
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 Interceptionについて知っていますが、さまざまな理由から、このためにプロキシベースのソリューションを使用したくありません。現時点では、IBatchProcessインスタンスのアクティベーション戦略を試して、それらを解決してから装飾して返すことができるようにする必要があるようですが、バインディングAPIで何かを見逃しているだけだと思います。