我在项目#1中有一个ecomm应用程序。
我在Project#2中有一个引用Project#1的支付网关实现。它引用接口,以便将网关实现为契约。
现在我需要实际使用Project#1中Project#2的实现。
存在循环依赖,因此它不是“按原样运行。”
我该怎么办?我应该将接口分解为自己的项目吗?这似乎是最简单的方法。
关键是如果我需要创建另一个网关实现,它可以很容易地合并到项目#1中。
答案 0 :(得分:1)
将接口放在单独的库中通常是个好主意。它还确保您可以彼此独立地改变和部署具体实现。
作为一般的经验法则,当我设计时,我首先将接口与消费者放在一起,然后在需要时将它们移动到一个单独的库中。
据我了解您的描述,您在每个库中都有消费者,因此移动它们听起来就像是正确的方法。
如果您发现这些界面足够不相关,您甚至可以考虑将它们放在两个不同的库中。
答案 1 :(得分:0)
是。您应该将插件应该实现的接口(以及任何可能的公共帮助程序代码)放在单独的程序集中。
答案 2 :(得分:0)
是的,将您的界面分解为另一个项目并从两者引用该项目。这样,两者都依赖于抽象。
答案 3 :(得分:0)
这是你的另一个问题,但它至少有更多细节。
如果Project 2是Project 1的插件,那么Project 1在任何情况下都不应该对Project 2有任何依赖。周期。
通过反射/ MEF /等将Project 2的装配加载到Project 1中