鉴于:
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 中的某些内容。