嗨,这可能只是缺乏思考,但我看不出如何“很好地”解决这个问题。我有一个负责审计的组件,用于整个系统,例如:
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
上保留默认构造函数。