小编Nea*_*eal的帖子

Ninject和装饰者

鉴于:

public interface IBatchProcess
{
    void Run();
}
Run Code Online (Sandbox Code Playgroud)

和多个实现:

public class BatchProcessOne : IBatchProcess { ... }
public class BatchProcessTwo : IBatchProcess { ... }
public class BatchProcessThree : IBatchProcess { ... }
Run Code Online (Sandbox Code Playgroud)

和一个跟踪装饰:

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." );
    }
}
Run Code Online (Sandbox Code Playgroud)

如何绑定装饰器和所有实现,这样当我调用kernel.GetAll时,我得到3个跟踪装饰器实例,每个实例都有不同的内部批处理过程?

我知道Ninject拦截,并且由于各种原因不希望使用基于代理的解决方案.目前看起来我需要使用IBatchProcess实例的激活策略,以便它们被解析,然后我可以装饰并返回它们但我希望我只是错过了绑定api中的某些东西.

ninject ninject-2

5
推荐指数
1
解决办法
430
查看次数

标签 统计

ninject ×1

ninject-2 ×1