【发布时间】:2014-05-14 05:12:16
【问题描述】:
我有一个 Adaptor 可以找到 Sources 并返回它。但我需要保留适配器及其所有来源的参考。但是这种设计会产生循环依赖。
IAdaptor需要一个返回ISource列表的函数,每个ISource都需要保留一个自己的Adaptor的引用。
ISource 保存在 Project 1 中,IAdaptor 保存在 Project 2 中
如何在不相互创建循环依赖的情况下做到这一点?
【问题讨论】:
-
在第三个程序集中定义公共接口并在实现程序集中引用它。除此之外,您可能需要使用某种dependency injection。考虑使用IoC container,例如MEF。
-
看起来 IAdaptor 和 ISource 确实是紧密耦合的。如果它反映了您的商业模式,只需将它们保存在单个项目中即可。
-
你能澄清一下你的意思是:一个实际的程序集引用循环依赖吗?或者,如果您的意思是类型本身内的循环引用?
-
您的 Source 需要您的 Adaptor 提供什么?
-
如果您要求源做某事,它会告诉其适配器为它做这件事。