Учитывая:
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 привязки.