16

当我引用两个具有相同命名空间和类型名称的外部程序集时,我遇到了不太可能的情况。当我尝试使用该类型时,编译器会抛出一个错误,它无法解析我想要使用的类型。

我看到 C# 提供了一种使用别名进行引用的机制。您甚至可以通过PropertyVisual Studio 2008 中的引用窗口指定这些别名。如何在我的代码中使用此别名?据我了解,我应该使用::运算符,但它失败并出现以下错误:

CS0432 - Alias not found

通常的.运算符也会失败。

在输出窗口中,我看到编译器在其命令行中正确传递了别名。

非常感谢任何关于我接下来可以尝试的指示。

4

4 回答 4

17
extern alias alias1;
using alias1::Namespace;
于 2009-03-06T14:55:23.703 回答
4

试试这个:

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,asm2assembly2的项目参考

于 2009-03-06T14:56:04.327 回答
3

我认为您需要使用 extern aliasAnson Horton有一篇关于这个问题以及如何使用外部别名来修复它的好博客。

于 2009-03-06T14:56:37.337 回答
-1

当您在项目中引用某些程序集时,它具有默认别名“全局”。当您为该程序集添加另一个别名时,例如“global, AssemblyA”,您将像这样引用它:

using SomeTypeAlias = AssemblyA::Company.Product.SomeType;

或者:

void SomeMethod(AssemblyA::Company.Product.SomeType someType) { ... }
于 2009-03-06T14:59:47.127 回答