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中遺漏了某些東西。