成员有依赖关系的环境背景

时间:2013-06-12 11:38:32

标签: c# dependency-injection ambientcontext

嗨,这可能只是缺乏思考,但我看不出如何“很好地”解决这个问题。我有一个负责审计的组件,用于整个系统,例如:

public class RemoteAuditLogger: AuditLogger{}

其中AuditLogger是一个接口。就目前而言,我正在使用几个类的构造函数注入(这个类列表正在增长)。所以我正在考虑实现 Ambient Context 。我遇到的问题是RemoteAuditLogger具有自己的依赖关系(在这种情况下是远程审计服务代理)。

所以我想:

public abstract class SomeContext{
    private static SomeContext _currentCtx;
    public static SomeContext Current{
        get{
           if(_currentCtx == null){
              _currentCtx = new DefaultContext();
           }
           return _currentCtx;
        }
        set{
           _currentCtx = value;
        }
    }

    public abstract AuditLogger AuditLogger{ get; }
}

在这种情况下,DefaultContext将返回RemoteAuditLogger。有没有一种方法可以保持上下文的解耦性,同时满足RemoteLogger的依赖性?我不希望SomeContext取决于远程审核代理,例如,所以它“感觉”就像我需要在DefaultContext上保留默认构造函数。

0 个答案:

没有答案