20

我已经向我的应用程序(第三方)导入了 2 个 dll 现在它们都有一个同名的命名空间。例如 AB 并且在它们两者中都有一个具有相同名称的类。现在我想创建其中一个的实例,但由于命名空间和类名相同,编译器变得模棱两可。如何指定在该地方使用的女巫 dll?

4

2 回答 2

35

假设您有 2 个程序集 (ClassLibrary1.dllClassLibrary2.dll),它们都在同一个命名空间中定义了同一个类:

namespace Foo
{
    public class Bar
    {
    }
}

现在在消费项目中,您可以在类库的引用中定义一个额外的别名:

在此处输入图像描述

现在您可以执行以下操作来帮助编译器消除歧义:

extern alias lib1;
extern alias lib2;

class Program
{
    static void Main()
    {
        var barFromLib1 = new lib1::Foo.Bar();
        var barFromLib2 = new lib2::Foo.Bar();
    }
}
于 2012-06-26T09:10:55.567 回答
-1

只是一点改进或增强的信息:如果您有多个使用,“外部别名 lib1;”-line 必须是这些使用中的第一个(但 MS VS 也会通知您)。

于 2017-07-19T10:08:39.717 回答