插件设计,具有循环依赖性问题

时间:2010-01-12 21:46:20

标签: c# visual-studio oop

我在项目#1中有一个ecomm应用程序。

我在Project#2中有一个引用Project#1的支付网关实现。它引用接口,以便将网关实现为契约。

现在我需要实际使用Project#1中Project#2的实现。

存在循环依赖,因此它不是“按原样运行。”

我该怎么办?我应该将接口分解为自己的项目吗?这似乎是最简单的方法。

关键是如果我需要创建另一个网关实现,它可以很容易地合并到项目#1中。

4 个答案:

答案 0 :(得分:1)

将接口放在单独的库中通常是个好主意。它还确保您可以彼此独立地改变和部署具体实现。

作为一般的经验法则,当我设计时,我首先将接口与消费者放在一起,然后在需要时将它们移动到一个单独的库中。

据我了解您的描述,您在每个库中都有消费者,因此移动它们听起来就像是正确的方法。

如果您发现这些界面足够不相关,您甚至可以考虑将它们放在两个不同的库中

答案 1 :(得分:0)

是。您应该将插件应该实现的接口(以及任何可能的公共帮助程序代码)放在单独的程序集中。

答案 2 :(得分:0)

是的,将您的界面分解为另一个项目并从两者引用该项目。这样,两者都依赖于抽象。

答案 3 :(得分:0)

这是你的另一个问题,但它至少有更多细节。

如果Project 2是Project 1的插件,那么Project 1在任何情况下都不应该对Project 2有任何依赖。周期。

通过反射/ MEF /等将Project 2的装配加载到Project 1中