3

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

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.

4

0 回答 0