【问题标题】:Use types of same name & namespace in 2 .NET assemblies在 2 个 .NET 程序集中使用相同名称和命名空间的类型
【发布时间】:2010-11-07 05:48:33
【问题描述】:

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

毫不奇怪,编译器给了我一个关于不明确引用的编译错误。有什么方法可以显式指定我要使用的程序集中的类型以避免歧义?

注意:我知道这在实践中很少发生,如果有的话。这只是出于对语言功能的好奇而提出的问题。

【问题讨论】:

    标签: c# .net msbuild namespaces assembly-resolution


    【解决方案1】:

    我认为您应该使用extern alias 将程序集命名空间包装在全局命名空间之外。方法如下:

    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...

    【讨论】:

      【解决方案2】:

      它在实践中发生并且是一个真正的痛苦,外部别名不能总是解决问题。这是问题所在Duplicate Namepsaces 的一个示例。

      【讨论】:

        猜你喜欢
        • 2022-12-31
        • 1970-01-01
        • 2011-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多