出于好奇心,我创建了两个程序集,它们都有一个带有完全相同名称空间(Library1
)的类(Class1
)。 然后,我创建了另一个客户端引用这两个程序集,并尝试创建 Class1
的实例。
编译器很自然地给了我一个关于模糊引用的编译错误。是否有任何方法可以明确指定要使用的程序集中的类型以避免歧义?
注意:我知道在实践中几乎从不发生这种情况。 这只是关于语言特性的好奇问题。
出于好奇心,我创建了两个程序集,它们都有一个带有完全相同名称空间(Library1
)的类(Class1
)。 然后,我创建了另一个客户端引用这两个程序集,并尝试创建 Class1
的实例。
编译器很自然地给了我一个关于模糊引用的编译错误。是否有任何方法可以明确指定要使用的程序集中的类型以避免歧义?
注意:我知道在实践中几乎从不发生这种情况。 这只是关于语言特性的好奇问题。
我认为您应该使用extern alias来包装Global命名空间之外的程序集名称空间。以下是具体步骤:
在引用这2个程序集的项目中,选择其中一个程序集并在“引用”下的“属性”窗口中将别名(Aliases)的值从global
改为例如global,Library1a
。
对于另一个引用,同样地更改别名,但给它一个不同的别名,例如我们采用global,Library1b
。
在消费这些程序集的任何类的开头加入 extern alias Library1a;
和/或 extern alias Library1b;
。
访问模糊成员时,请使用 Library1a.
或 Library1b.
来限定命名空间。例如: Library1a.Library1.Class1...
,Library1b.Library1.Class1...