我在一個模塊(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. 在Int32和枚舉之間轉換
- 2. 轉換枚舉來枚舉
- 3. 在枚舉值之間切換:C++
- 4. 枚舉和枚舉之間的區別
- 5. 在C枚舉和XML之間進行轉換
- 6. 將枚舉轉換爲枚舉的MACRO
- 7. 將枚舉轉換爲其他枚舉
- 8. 不能轉換UserQuery枚舉枚舉
- 9. 轉換爲枚舉
- 10. 轉換枚舉在Python
- 11. 跨模塊的Python枚舉
- 12. 兩個枚舉之間的超載轉換運算符
- 13. C#阻止枚舉轉換int轉換
- 14. 將MemberInfo []轉換爲枚舉
- 15. 正確轉換爲枚舉
- 16. Jbeahve - 轉換枚舉參數
- 17. 轉換枚舉迭代器
- 18. 轉換枚舉內HTML
- 19. 枚舉類對象轉換
- 20. 將枚舉轉換爲uint
- 21. XSL轉換爲枚舉
- 22. 動態枚舉轉換器
- 23. Convert.ChangeType並轉換爲枚舉?
- 24. 隱式轉換爲枚舉
- 25. 在Postgres中將枚舉類型整數轉換爲枚舉
- 26. 模式翻轉枚舉var
- 27. 在Angular模塊中導出枚舉
- 28. iPhone - 塊枚舉
- 29. 鑄造枚舉之間在C#
- 30. 在類之間共享一個枚舉
這裏最大的問題不在於保持兩者同步(儘管這是一個問題),而是事實上,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