1つのモジュール(A)に列挙型の定義があります。 SUCCESS = 0、INVALID_REQ = 1などです。次に、別のdll(モジュールB)があります。これには、独自のステータス列挙セットがあります。 Aに新しいenum値を追加したら、Aを.NETに、BをCコードに手動で追加する必要があります。さらに、Aの列挙型はBの状態列挙の一部に過ぎません(BはAの状態のほかに独自の内部状態を持っています)。 これは、これら2つのモジュール間の非常に緊密な結合のようです。カップリングを減らすための提案はありますか? Thx!モジュール間で列挙型を変換する
5
A
答えて
2
なぜビルド時のファイルに基づいてこれらの列挙型を生成する単純なスクリプトを記述していませんか?あなたが本当にそれを切り離すしたい場合は、誰かのマスターを作成し、他の側にその内容を公開する必要があります。..そうな楽しいだろうと何..
+0
*咳* COM IDL? *咳* –
+0
:)それは書くことの世界の終わりではありません.. :) – gbvb
1
をRCWを使用すると、ここにリフレクションを使用することです。モジュールAからの反射によって列挙型を読み取る小さなプログラムを作成し、cモジュールで使用する.hファイルを生成します。
関連する問題
- 1. C#の列挙型の型変換
- 2. 変換と列挙が必要な列挙型の置換
- 3. クラス階層に列挙型を変換
- 4. Cの列挙型とXMLの間の変換
- 5. Javaで列挙型を別の列挙型に変換するにはどうすればよいですか?
- 6. C++で列挙型変数の文字列変数を変換する
- 7. 文字列を一般的な列挙型に変換する
- 8. 文字列を列挙型に変換するには?
- 9. 文字列を列挙型に変換する
- 10. 列挙型を人間が判読可能な値に変換する
- 11. char配列を列挙型配列に変換しますか?
- 12. 列挙型変数
- 13. 列挙型を知らなくても列挙型の基礎値を文字列に変換する
- 14. C#で列挙型の一覧に変換する
- 15. 階層間の列挙型
- 16. 列挙型の等間隔?
- 17. PostgreSQL:列挙型を整数に変換できますか?
- 18. LINQで長整数型の列挙型を変換する方法
- 19. 文字列配列をC#で1つの列挙型に変換する
- 20. Swift enum:StringをObjective-C列挙型に変換する方法:NSString?
- 21. 列挙型をリストに変換する<string>
- 22. 列挙型の列挙型の列挙型へのアクセス
- 23. DBの列挙型または列挙型の列挙型
- 24. mysqlの列挙型を変更する
- 25. 列挙型の値を変更する
- 26. 文字列の配列を列挙型に変換するには?
- 27. 文字列ベースの列挙型の変換Typescript 2.4+
- 28. 列挙型内の列挙型
- 29. 列挙型の中の列挙型
- 30. 列挙型の列挙型の作成
ここでの最大の問題は、2つを同期させることではありませんが(問題ですが)、Bの列挙型がAの列挙型とは異なることを意味しています。新しい要素をAに追加しますが、突然Bで使用される内部値と競合します。相互運用性のために値を複製する必要がある場合は、相互運用性のために_only_を使用し、内部状態を別々に管理してください。 –
ここには暗黙の契約*があります。 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)や他の足場生成ツールを想像してみてください。 –
@ダン:私は、Aのようにenum値を使用し、100から始まるBのconst(Aから0-99)を定義することを考えています。次に、Bのインタフェースとしてenumの代わりにintegerを使用します。 AとBの両方のステータスは、Bのインターフェイスから公開され、AとBが互いに干渉する心配はありません。 – Icerman