出于好奇,我创建了 2 个程序集,它们都有一个Class1
具有完全相同命名空间 ( ) 的类 ( Library1
)。然后我创建另一个引用这 2 个程序集的客户端并尝试创建Class1
.
毫不奇怪,编译器给了我一个关于不明确引用的编译错误。有什么方法可以明确指定我想用来避免歧义的程序集中的类型?
注意:我知道这在实践中很少发生,如果有的话。这只是出于对语言功能的好奇而提出的问题。
出于好奇,我创建了 2 个程序集,它们都有一个Class1
具有完全相同命名空间 ( ) 的类 ( Library1
)。然后我创建另一个引用这 2 个程序集的客户端并尝试创建Class1
.
毫不奇怪,编译器给了我一个关于不明确引用的编译错误。有什么方法可以明确指定我想用来避免歧义的程序集中的类型?
注意:我知道这在实践中很少发生,如果有的话。这只是出于对语言功能的好奇而提出的问题。
我认为您应该使用外部别名将程序集名称空间包装在全局名称空间之外。就是这样:
在引用 2 个程序集的项目中,在“引用”下选择其中一个,然后在“属性”窗口中将别名值从更改global
为,例如global, Library1a
。
对另一个引用做同样的事情,但给它一个不同的别名——让global, Library1b
我们以我们的例子为例。
插入extern alias Library1a;
和/或extern alias Library1b;
作为使用程序集的任何类的前 2 行。
访问模棱两可的成员时,使用Library1a.
or限定命名空间Library1b.
。例子:Library1a.Library1.Class1...
Library1b.Library1.Class1...
它发生在实践中并且是一个真正的痛苦,外部别名不能总是解决问题。这是一个问题Duplicate Namepsaces的示例。