gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:21:19 27 4
gpt4 key购买 nike

我正在迁移一个用 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 之类的名称当然可行,但我们被要求不要这样做,以便使客户端代码更易于迁移。

最佳答案

您可以使用 extern alias从不同程序集中引用具有相同完全限定名称的类型。选择对 LibraryCS 的引用并将属性页中的别名从“global”更新为“LibraryCS”,并将 extern alias LibraryCS; 添加到源文件的顶部,然后您可以使用 LibraryCS::MyNamespace.MyClass 引用 LibraryCS 中的类。您可以使用 MyNamespace.MyClassglobal::MyNamespace.MyClass 来引用 LibWrapper 中的类,或者您也可以为该引用使用别名。

关于c# - 两个程序集中具有相同名称的类(有意),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792156/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com