建筑设计,以避免循环依赖

时间:2014-05-14 05:12:16

标签: c# circular-dependency

我有适配器,找到来源并将其返回。但我需要保留适配器及其所有来源的参考。但是这个设计将创建循环依赖。

IAdaptor 需要一个功能,返回 ISource 列表,每个 ISource 需要保留一个适配器的引用

ISource保存在项目1中,IAdaptor保存在项目2中

如何在不创建彼此循环依赖的情况下完成此任务?

1 个答案:

答案 0 :(得分:1)

我建议你看一下ISource在IAdaptor中真正需要的功能:从ISource实现调用IAdaptor上的哪些方法,以及那些与IAdaptor真正相关的方法。

在某些情况下,将这些功能从IAdaptor中移出作为一个单独且更通用的接口(我称之为ISourceDependency)并将其放在ISource的同一个程序集中可能是合适的。 ISource将依赖于ISourceDependency而不是IAdaptor,因此删除了循环依赖。然后,除了IAdaptor之外,您还需要让适配器实现ISourceDependency。

如果你发现ISourceDependency上的方法真的与IAdapter的逻辑联系在一起,那么将IAdapter放在与ISource相同的程序集中会更好。

相关问题