在模块之间转换 Enum
我在一个模块(A)中有一个枚举定义,例如 SUCCESS = 0、INVALID_REQ = 1 等。然后我有另一个 dll(模块 B),它有自己的一组状态枚举。一旦我们在 A 中添加了新的枚举值,我们就必须手动将其添加到 B 中,因为 A 位于 .NET 中,而 B 是 C 代码。此外,A 中的枚举只是 B 中状态枚举的一部分(除了 A 的状态之外,B 还具有自己的内部状态)。 这两个模块之间的耦合似乎非常紧密。有什么建议可以减少它们的耦合吗? 谢谢!
I have an enum definition in one module(A), e.g. SUCCESS = 0, INVALID_REQ = 1 etc. Then I have another dll (module B) which has its own set of status enum. Once we add a new enum value in A, we have to manually add it to B since A is in .NET and B is C code. Beside, enum in A is only part of the status enum in B (B has its own internal status besides status from A).
This seems a very tight coupling between these two modules. Any suggestions to make them less coupled?
Thx!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为什么不编写一个简单的脚本来在构建过程中根据文件生成这些枚举?如果你真的想将它们分开,你需要让某人成为主人并将其内容暴露给另一方..可能使用RCW..
Why not write a simple script that generates these enums based on a file during build? If you truly want to uncouple them, you will need to make someone a master and expose its content to the other side.. Likely using RCW..
在这里使用反射会很有趣。编写一个小程序,通过反射从模块 A 读取枚举,并生成一个 .h 文件以在 c 模块中使用。
What would be fun would be to use reflection here. Write a little program that reads the enum by reflection from module A, and generates a .h file for use in the c module.