在解决方案中使用另一个项目的函数

本文关键字:项目 函数 另一个 解决方案 | 更新日期: 2023-09-27 18:12:12

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

在解决方案中使用另一个项目的函数

不,不是。函数或方法包含在类型中,而类型又包含在程序集中。如果不能访问该程序集,则不能使用该类型的方法,因为既不能创建该类型的实例(如果该类型不是静态的),也不能使用该类型的名称(如果该类型是静态的)。

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

为了避免写两次相同的代码,我建议您创建另一个项目,它的输出将是一个dll,添加使用的类或类,将两个项目a和b的类或类,您将定义的新项目您可以定义您想要的常用方法,然后从项目中使用它们a和b,这应该是一个好方法,因为以后你可以用这个装配队友项目。因此,您将不必从头编写相同的代码或复制/过去。

你可以!你可以让项目A引用项目b,这不是循环依赖:

A -> B(f)

另一方面,如果B已经引用了A,那么,也许你的函数在错误的地方,你需要先做一些重构来实现:

A <- B(f)   =>   A(f) <- B
另一种策略是创建两个程序集都引用的第三个"库"程序集:
A -> C(f) <- B

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

创建循环依赖

这部分很有趣。这可能是一个糟糕设计的迹象。如果这个函数是公共的,它应该被移到第三个程序集(作为类库),称为 common 等。然后它可以被其他程序集安全地引用,更好的是,它的目的是明确的。