在 2 个 .NET 程序集中使用相同名称和命名空间的类型

问题描述 投票:0回答:2
出于好奇,我创建了 2 个程序集,它们都有一个具有完全相同的命名空间 (

Class1

) 的类 (
Library1
)。然后,我创建另一个引用这两个程序集的客户端,并尝试创建 
Class1
 的实例。 
毫不奇怪,编译器给了我一个关于不明确引用的编译错误。有什么方法可以显式指定我想要使用的程序集中的类型以避免歧义吗?

注意:我知道这种情况在实践中很少发生(如果有的话)。这只是出于对语言特性的好奇而提出的问题。

c# .net msbuild namespaces assembly-resolution
2个回答
10
投票
extern 别名

将程序集命名空间包装在全局命名空间之外。方法如下:

    在引用 2 个程序集的项目中,在“引用”下选择其中一个,然后在“属性”窗口中将“别名”值从
  1. global

    更改为

    global, Library1a
    
    

  2. 对另一个引用执行相同的操作,但为其指定一个不同的别名 - 让我们使用
  3. global, Library1b

    作为示例。

    
    

  4. 插入
  5. extern alias Library1a;

    和/或

    extern alias Library1b;
    作为使用程序集的任何类的前 2 行。
    
    

  6. 访问不明确的成员时,请使用
  7. Library1a.

    Library1b.
    限定命名空间。示例:
    Library1a.Library1.Class1...
    Library1b.Library1.Class1...
    
    


1
投票
重复命名空间

© www.soinside.com 2019 - 2024. All rights reserved.