如何让命名空间别名operator ::在C#下工作?
当我引用两个具有相同命名空间和类型名称的外部程序集时,我遇到了不太可能发生的情况。 当我尝试使用该类型时,编译器抛出一个错误,它无法解析我想要使用的那个。
我看到C#提供了一种为引用使用别名的机制。 您甚至可以通过Visual Studio 2008中引用的“ Property
窗口指定这些别名。如何在代码中使用此别名? 据我所知,我应该使用::
运算符,但它失败并出现以下错误:
CS0432 - Alias not found
通常的.
运营商也失败了。
在输出窗口中,我看到编译器在其命令行中正确传递了别名。
关于我接下来可能尝试的任何指示都非常感谢。
extern alias alias1; using alias1::Namespace;
试试这个:
extern alias asm1; extern alias asm2; namespace Client { class Program { static void Main(string[] args) { asm1.MyNs.MyClass mc1 = null; asm2.MyNs.MyClass mc2 = null; } } }
并将global,asm1
添加到assembly1和global,asm2
的项目引用global,asm2
for assembly2
我认为你需要使用extern别名 。 Anson Horton有一个关于这个问题的好博客,以及如何使用extern别名来修复它。
当您在项目中引用某个程序集时,它具有默认别名“global”。 当您为该程序集添加另一个别名时,例如“global,AssemblyA”,您将像这样引用它:
using SomeTypeAlias = AssemblyA::Company.Product.SomeType;
要么:
void SomeMethod(AssemblyA::Company.Product.SomeType someType) { ... }