在解决方案中使用其他项目的功能

时间:2014-07-09 10:49:33

标签: c# .net

我有两个项目的解决方案。我无法在B中添加A的引用,因为它会创建循环依赖。 为了避免冗余代码,我想在另一个项目中的一个项目中使用一个函数。这可能吗?

4 个答案:

答案 0 :(得分:6)

不,不是。函数或方法包含在类型中,该类型包含在程序集中。如果您无法访问此程序集,则无法使用此类型的方法,因为您无法创建类型的实例 - 如果类型不是静态的 - 或者使用类型的名称 - 如果类型是静态 -

<强>更新

我说在上下文中你不可能将一个项目的引用添加到另一个项目中。

为了避免两次编写相同的代码,我建议你创建另一个项目,其输出将是一个dll,并添加类和项目A和B将使用的类。在类中或者你将在新项目中定义的类,你可以定义你想要的常用方法,然后从项目A和B中使用它们。这应该是一个很好的方法,因为以后你可以使用这个程序集来解决项目。因此,您不必从头开始编写相同的代码,也不必复制/过去。

答案 1 :(得分:3)

是的,你可以!您可以拥有项目A参考项目B.这不是循环依赖项:

A -> B(f)

另一方面,如果B已经引用了A,那么,也许你的函数位于错误的位置,你需要先进行一些重构才能实现:

A <- B(f)   =>   A(f) <- B

另一种策略是创建第三个图书馆&#34;两个程序集引用的程序集:

A -> C(f) <- B

答案 2 :(得分:3)

创建第三个项目并将其用于其他两个项目之间的共享代码。

答案 3 :(得分:3)

  

它创建了循环依赖

这部分很有意思。这可能表明设计糟糕。如果这个函数很常见,它应该被移动到第三个程序集(如类库),如 Common 等。然后它可以被其他程序集安全地引用,什么是更好的 - 它的目的很明确。