我在一個模塊(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