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中遗漏了某些东西。