C# 是否可以显式解决具有相同全名的两种类型之间的冲突?

Cha*_*ion 0 c# namespaces

我有一个引用 2 个程序集 A 和 B 的项目。

A 和 B 都声明了一个具有相同全名的公共类型(例如 Foo.Bar)。

当我构建时,编译器似乎选择一种类型进行引用,然后抛出警告。有什么方法可以明确我想使用哪个实现(例如来自程序集 A 的 Foo.Bar)?

brz*_*brz 5

你必须使用extern alias. 您必须为每个 dll 使用 /r 开关编译代码。

csc /r:AssemblyA=A.dll /r:AssemblyB=B.dll [myProject]

或者,您可以通过在项目References文件夹中选择程序集并Aliases使用properties window.

然后在您的.cs文件中使用extern alias明确选择要使用的类型:

extern alias AssemblyA;
extern alias AssemblyB;

public class Test
{
   public void TestMethod()
   {
      var aFooBar = new AssemblyA.Foo.Bar();
      var bFooBar = new AssemblyB.Foo.Bar(); 
   }
}
Run Code Online (Sandbox Code Playgroud)

更多信息在这里