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

pgb*_*pgb 34 c# namespaces class

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

namespace MyNamespace
   class MyClass
   class MyOtherClass
Run Code Online (Sandbox Code Playgroud)

我的新库LibraryCS包含与LibWrapper(按用户要求)相同的名称空间和类名,所以我也有:

namespace MyNamespace
   class MyClass
   class MyOtherClass
Run Code Online (Sandbox Code Playgroud)

现在迁移完成了,我正在创建一个比较两个库的结果的测试,以验证迁移.但是,当我尝试引用时,MyNamespace.MyClass我得到一个编译器错误(预期!),说"MyNamespace.MyClass在LibWrapper和LibraryCS中定义".

有没有解决这个问题的技巧,这将允许我使用两个具有完全相同名称但来自同一客户端代码中不同程序集的类?

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

将迁移的命名空间重命名为类似MyNamespace2的功能,但我们被要求不要这样做,以便更容易迁移客户端代码.

Qua*_*ter 61

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

  • 我同意Quartermeister.请参阅以下内容以获取更多参考:http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx (6认同)
  • @Kari 你的链接已损坏。 (2认同)