两个程序集中具有相同名称的类(故意)

2024-03-30

我正在迁移一个用 C++ 编写并具有 C# 包装器的库。 C# 包装器 (LibWrapper)有一组带有命名空间的类,例如:

namespace MyNamespace
   class MyClass
   class MyOtherClass

我的新图书馆,LibraryCS包含相同的命名空间和类名LibWrapper(根据用户要求),所以我也有:

namespace MyNamespace
   class MyClass
   class MyOtherClass

现在迁移已完成,我正在创建一个测试来比较使用两个库的结果,以验证迁移。然而,当我尝试参考MyNamespace.MyClass我收到一个编译器错误(意料之中!),显示“MyNamespace.MyClass 在 LibWrapper 和 LibraryCS 中都定义了”。

围绕这个问题是否有任何技巧,可以让我在同一客户端代码中使用两个名称完全相同但来自不同程序集的类?

或者,还有其他方法来测试这个吗?

将迁移的命名空间重命名为类似的名称MyNamespace2当然可以,但我们被要求不要这样做,以便使客户端代码更容易迁移。


您可以使用外部别名 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/extern-alias从不同的程序集中引用具有相同完全限定名称的类型。选择对 LibraryCS 的引用并将属性页面中的别名从“global”更新为“LibraryCS”,然后添加extern alias LibraryCS;到源文件的顶部,然后您可以使用LibraryCS::MyNamespace.MyClass引用 LibraryCS 中的类。您可以使用MyNamespace.MyClass or global::MyNamespace.MyClass引用 LibWrapper 中的类,或者也可以使用该引用的别名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个程序集中具有相同名称的类(故意) 的相关文章

随机推荐