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