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