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

Buu*_*yen 12 .net c# msbuild namespaces assembly-resolution

出于好奇,我创建了两个程序集,它们都有一个Class1具有完全相同名称空间(Library1)的class ().然后我创建另一个引用这两个程序集的客户端,并尝试创建一个实例Class1.

毫不奇怪,编译器给出了关于模糊引用的编译错误.有没有办法明确指定我想要使用的程序集中的类型以避免歧义?

注意:我很少知道,如果有的话,在实践中发生.这只是一个关于语言特征的好奇心的问题.

CMS*_*CMS 10

我认为您应该使用extern别名将程序集名称空间包装在Global名称空间之外.这是如何做:

  1. 在引用2个组件的项目,选择参考下的其中之一,并在属性窗口中更改别名值从global,比方说,global, Library1a.

  2. 对另一个引用做同样的事情,但给它一个不同的别名 - 让我们继续global, Library1b我们的例子.

  3. 插入extern alias Library1a;和/或extern alias Library1b;作为使用程序集的任何类的前2行.

  4. 访问不明确的成员时,使用Library1a.或限定命名空间Library1b..例子:Library1a.Library1.Class1... Library1b.Library1.Class1...