C# 使用另一个项目&x27;解中的s函数

C# 使用另一个项目&x27;解中的s函数,c#,.net,C#,.net,我有两个项目的解决方案。我无法在B中添加a的引用,因为它会创建循环依赖关系。 为了避免冗余代码,我想在我的一个项目中使用一个函数。那可能吗?不可能。函数或方法包含在程序集中包含的类型中。如果您没有访问此程序集的权限,则无法使用此类型的方法,因为您既不能创建该类型的实例(如果该类型不是静态的),也不能使用该类型的名称(如果该类型是静态的) 更新 我说这在上下文中是不可能的,因为您不能将一个项目的引用添加到另一个项目 为了避免编写两次相同的代码,我建议您创建另一个项目,其输出将是一个dll,并在其中

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

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

更新

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


为了避免编写两次相同的代码,我建议您创建另一个项目,其输出将是一个dll,并在其中添加一个或多个将由项目a和B使用的类。在一个或多个类中,您将在新项目中定义这些方法,您可以定义所需的常用方法,然后从项目A和B中使用它们。这应该是一个好方法,因为稍后您可以使用此程序集来设置项目。因此,您不必从一开始就编写相同的代码,也不必复制过去。

是的,您可以!您可以使用项目A引用项目B。该项目不是循环依赖项:

A -> B(f)
另一方面,如果B已经引用了A,那么,可能您的函数位于错误的位置,您需要首先进行重构以实现:

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

A(f)C(f)创建第三个项目,并将其用于其他两个项目之间的共享代码

它创建循环依赖关系


这部分很有趣。这可能是设计不好的迹象。如果此函数是公共函数,则应将其移动到第三个程序集(作为类库),称为“公共”等。然后,其他程序集可以安全地引用它,更好的方法是什么?其目的很清楚。

,您可以始终使用反射来加载另一个程序集并从中调用方法,但这很麻烦。嗯,这可能是一个选项。创建一个单独的第三个共享项目,并在那里填充您需要在两个项目中使用的方法。您的函数是在项目a或B中定义的,还是在其他地方定义的?通过“程序集”你的意思是我应该添加第三个“类库”类型的项目,并将所有常用类放在那里?
A -> C(f) <- B