Gegeben:Ninject und Dekorateure
public interface IBatchProcess
{
void Run();
}
und mehrere Umsetzung:
public class BatchProcessOne : IBatchProcess { ... }
public class BatchProcessTwo : IBatchProcess { ... }
public class BatchProcessThree : IBatchProcess { ... }
und ein Verfolgungs Dekorateur:
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.");
}
}
Wie kann ich den Dekorateur und all die Implementierungen binden so dass, wenn ich kernel.GetAll aufrufen ich 3 Instanzen der Ablaufverfolgung Dekorator, jeder mit einem anderen inneren Batch-Prozess?
Ich weiß über Ninject Interception und wollen keine Proxy-basierte Lösungen für diese aus verschiedenen Gründen verwenden. Momentan sieht es so aus, als müsste ich mit der Aktivierungsstrategie für IBatchProcess-Instanzen herumspielen, so dass sie aufgelöst werden und dann kann ich sie dekorieren und zurückgeben, aber ich hoffe, dass ich etwas in der verbindlichen API verpasst habe.