从C#,C/C++LI和C共享一个枚举

我有一个图书馆,由三部分组成。首先是native C,它提供了实际的功能。二是用于C库的C/C++LI包装器/适配器,以简化C#到C转换。最后我有一个C#库,它通过C/C++LI适配器调用C库。

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

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

现在我不确定一个解决方案,如thisthat将解决这两个问题。思考?

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

编辑:Brent提出的一个变体是使用#define替换在.cs文件中声明的一个命名空间(甚至枚举名称本身)。这也避免了命名冲突,而不会使命名空间层次更深。

翻译自:https://stackoverflow.com/questions/3240263/sharing-an-enum-from-c-c-cli-and-c

转载注明原文:从C#,C/C++LI和C共享一个枚举