我有一个包含5-6个项目的大型VS.NET项目,其中一个项目是核心DLL。
现在添加一些插件支持我提取了一个接口,但是接口需要使用其他类,而Core.dll需要接口,所以我不得不将它们分开。 (我不能互相引用)
在此之后,我的一天毁了,因为即使花了大约4个小时,我也无法将它们分开!最后我创建了20多个项目,但它仍然不起作用(实际上甚至没有关闭)。看起来我最终会得到50个项目,需要更改大量代码才能使其正确。
我意识到我的代码是高度耦合的,然后又回来了。
我这样做了吗?现在,由于我的高度耦合代码,我必须支付我的会费吗?或者我错过了什么?
答案 0 :(得分:3)
重构,重构,重构。你将不得不支付你的会费,但我认为这是值得的。你会学到很多东西。
答案 1 :(得分:3)
如果您使用接口,那么您应该能够将接口从核心DLL中拉出来,并且可以轻松接口以满足原始接口上的任何要求。
如果您通过接口具有高度耦合的依赖关系,则可能需要重构一下。尝试从主界面的依赖项中提取接口或基类(这很容易进入新项目)。这应该有助于防止听起来像你现在遇到的循环依赖问题。
但总的来说,在你做这件事之前,我会先退一步思考一下你的项目。项目布局应该基于功能而不是依赖 - 如果你根据他们干净利落的方式对你的类进行分组,大多数依赖性问题都会使自己清理干净。在尝试提取之前,我真的会考虑重构,以便获得最干净的布局。
答案 2 :(得分:1)
您是否考虑过使用MEF
答案 3 :(得分:0)
您是否已创建依赖关系图? Graphviz点可以帮助可视化(和解释)问题。