public interface IBatchProcess
{
void Run();
}
y múltiple aplicación de:
public class BatchProcessOne : IBatchProcess { ... }
public class BatchProcessTwo : IBatchProcess { ... }
public class BatchProcessThree : IBatchProcess { ... }
y un decorador trazado:
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.");
}
}
¿Cómo puedo enlazar el decorador y todas las implementaciones de modo que cuando llamo kernel.GetAll obtengo 3 instancias del decorador de rastreo, cada una con un proceso por lotes interno diferente.
Conozco Ninject Interception y no quiero usar soluciones basadas en proxy para esto por varias razones. Por el momento, parece que tengo que jugar con la estrategia de activación para las instancias de IBatchProcess, de modo que se resuelvan y luego pueda decorarlas y devolverlas, pero espero haber perdido algo en la API obligatoria.