Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 解循环依赖_.net_Circular Dependency - Fatal编程技术网

.net 解循环依赖

.net 解循环依赖,.net,circular-dependency,.net,Circular Dependency,我在VisualStudio解决方案中有两个类项目。由于th项目的性质,两个项目都相互引用,因为它们需要对方的服务(想想“我抓你的背,你抓我的”这句话) VisualStudio(2010)不允许我从项目a添加对项目b的引用,因为项目a已经引用了项目b 有什么策略可以解决这种循环依赖关系 谢谢你,正是“必须打破它”。将两者分开或合并为一个模块。您可以使用两种典型方法: 1) 将两个项目合并为一个项目 2) 找出两个项目的共同部分,并将它们分解成单独的第三个项目 将独立服务(不依赖于其他项目的服

我在VisualStudio解决方案中有两个类项目。由于th项目的性质,两个项目都相互引用,因为它们需要对方的服务(想想“我抓你的背,你抓我的”这句话)

VisualStudio(2010)不允许我从项目a添加对项目b的引用,因为项目a已经引用了项目b

有什么策略可以解决这种循环依赖关系


谢谢你,正是“必须打破它”。将两者分开或合并为一个模块。

您可以使用两种典型方法:

1) 将两个项目合并为一个项目

2) 找出两个项目的共同部分,并将它们分解成单独的第三个项目


将独立服务(不依赖于其他项目的服务)重构为第三个类库,并让两个项目都引用第三个类库


另一方面,如果这两个项目紧密结合,然后您还应该考虑将它们合并到一个项目中。

一个项目可以公开另一个项目实现的接口,然后它不再需要对另一个项目的引用。

我们有一个类似的情况,我们需要调用dbCon类来获取从项目a到项目b的dbConnection字符串。我们通过将其存储在数据库的dbconfig表中并将其作为参数传递给项目b来解决它

正确的解决方案可能是将“项目a”和“项目b”的一部分分解为“项目c”。那么A和B都依赖于C,而两者都不依赖于另一个

除了一些增量构建过程之外,不可能有真正的循环依赖关系。在增量构建过程中,您构建一个包含B.dll需要的所有内容但不包含B.dll需要的任何内容的.dll,然后将其替换为使用新构建的B.dll构建并包含依赖于它的内容的新dll。最终,这样一个复杂的战略肯定是不值得的

也可以构建netmodules,然后使用程序集链接器将它们组合到一个程序集中,但同样,结果无法证明所涉及的工作是合理的