我有一个包含三个部分的库。首先是 native C++,它提供了实际的功能。其次是用于C++库的C++/CLI包装器/适配器,以简化从C#到C++的过渡。最后,我有一个C#库,该库通过C++/CLI适配器调用C++库。

现在,我有两组并行的枚举定义,一组存储在.cs文件中,另一组存储在.h文件中。这带来了一个双重问题:

  • 我有双重维护。我必须始终同步两个文件位置中的枚举更改。
  • 两个枚举使用的命名空间应该相同,但是C++/CLI包装器会同时查看两个枚举集并在它们之间进行转换,这会导致命名冲突。

  • 现在,我不确定像thisthat这样的解决方案是否可以解决这两个问题。有什么想法吗?

    最佳答案

    只需将#include "Enum.cs"指令放在外部 namespace 中即可解决命名冲突。

    编辑:Brent建议的一种变体是使用#define替换.cs文件中声明的 namespace (甚至是枚举名称本身)之一。这也避免了命名冲突,而不会使 namespace 层次结构更深。

    10-07 12:48
    查看更多