【发布时间】:2015-12-16 17:17:36
【问题描述】:
在我的 (C#) 软件项目中,我有几个模块(由单独的 Visual Studio 项目表示) - 由于历史原因 - 有很多循环依赖项(紧密耦合)。
我目前正在尝试解决/删除循环引用。我已经添加了依赖注入——但这当然不会解析/删除循环引用。
所以,我正在考虑使用事件来解决“转发”依赖项。他们不会直接调用转发依赖项,而是会在此事件上注册。
但是,其中一些依赖项需要在其他依赖项之前执行,例如这个(简化的)示例:
void DeleteCompany(int companyId)
{
// must run before other dependencies
ForwardDepend1.OnCompanyDeleted(companyId);
// can run in parallel
ForwardDepend2.OnCompanyDeleted(companyId);
ForwardDepend3.OnCompanyDeleted(companyId);
// must run as last command
this.OnCompanyDeleted(companyId);
}
ForwardDependX的所有类都依赖于当前类;所以这些是我要解决的循环引用。
有没有解决这种“复杂事件”机制的现有模式?或者有没有其他更好的方法来解决这个问题?
我试过用谷歌搜索这个问题,但找不到任何好的关键字。
【问题讨论】:
标签: c# architecture module