我在一个模块(A)中有一个枚举定义,例如, SUCCESS = 0,INVALID_REQ = 1等。然后我有另一个dll(模块B),它有自己的一组状态枚举。一旦我们在A中添加一个新的枚举值,我们必须手动将它添加到B中,因为A在.NET中,B是C代码。除此之外,A中的枚举只是B中状态枚举的一部分(B除了A的状态外,还有其自身的内部状态)。 这似乎是这两个模块之间非常紧密的耦合。任何建议,使他们不那么耦合? Thx!在模块之间转换枚举
5
A
回答
2
为什么不编写一个简单的脚本,在构建期间基于文件生成这些枚举?如果你真的想解开它们,你需要让某人成为主人,并将其内容暴露给另一方..可能使用RCW ..
1
有趣的是在这里使用反射。编写一个小程序,通过模块A的反射读取enum,并生成一个用于c模块的.h文件。
相关问题
- 1. 转换枚举来枚举
- 2. 在枚举值之间切换:C++
- 3. 在C枚举和XML之间进行转换
- 4. 不能转换UserQuery枚举枚举
- 5. 转换枚举在Python
- 6. 两个枚举之间的超载转换运算符
- 7. 跨模块的Python枚举
- 8. C#阻止枚举转换int转换
- 9. 转换枚举迭代器
- 10. 正确转换为枚举
- 11. 枚举类对象转换
- 12. 转换枚举内HTML
- 13. Convert.ChangeType并转换为枚举?
- 14. 将枚举转换为uint
- 15. 隐式转换为枚举
- 16. 在Postgres中将枚举类型整数转换为枚举
- 17. 在Angular模块中导出枚举
- 18. iPhone - 块枚举
- 19. 字符串转换枚举在C#中
- 20. java中枚举数与枚举之间的区别
- 21. 枚举结构内: '之间' 和“枚举<anonymous>
- 22. 枚举转换成另一种类型的枚举
- 23. 多个枚举的国际化(枚举值的转换)
- 24. 价值转换问题:从枚举类型“枚举NSEventMask”
- 25. 字符串转换为枚举的枚举名
- 26. 将Objective-c的枚举转换为Android的枚举
- 27. 将java枚举转换为scala枚举json4s序列化
- 28. C++/CLI:从非托管枚举转换为托管枚举
- 29. 如何枚举进程的模块?
- 30. 与protobuf的枚举替换C++枚举
这里最大的问题不在于保持两者同步(尽管这是一个问题),而是事实上,B中的枚举意味着与A中的枚举不同的事实。现在,您打开了想要为A添加一个新元素,但突然它与B使用的内部值冲突。如果您为了互操作性的目的需要复制值,请使用_only_来实现互操作性并单独管理内部状态。 – 2011-01-18 22:40:54
这里有一个*隐式合约*。想象一下HTTP2会添加一个新的动词,如[JABBERWOCKY](http://www.jabberwocky.com/carroll/jabber/jabberwocky.html)。所有的HTTP2客户端/服务器需要在知道这个合同的情况下进行编码。使用明确的[协议]版本,或许带有警卫和[向下兼容性](http://en.wikipedia.org/wiki/Backward_compatibility),可以有效捕捉和/或减轻不匹配。有工具可以帮助分享合同信息 - 想象[COM IDL](http://en.wikipedia.org/wiki/Component_Object_Model)或其他脚手架发电机。 – 2011-01-19 00:08:01