我正在迁移一个用 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(使用前将#替换为@)