私が書いているプログラムの異なる部分間でメッセージを送るシステムを実装しています。いくつかの一般的なメッセージタイプと、プログラムの各部に固有のメッセージタイプがあります。私は、各タイプの基本メッセージクラスから派生する階層的な腐敗を避けたいと思います。だから、このタイプをintまたはushortにカプセル化しています。次に、 "Messages"名前空間とさまざまな定数を持つ静的クラスを使ってさまざまな型を集中させます。しかし、私はそれぞれ異なるセクションに一意の番号のリストを維持することの問題に遭遇した:Cでの切り替え可能なユニークな識別子
namespace Messages
{
public static class Generic
{
public const Int32 Unknown = 0;
public const Int32 Initialize = 1;
...
public const Int32 Destroy = 10;
}
}
そして、他の場所で
namespace Messages
{
public static class Graphics
{
public const Int32 Unknown = 0;
public const Int32 AddGraphic = 11; // <-- ?
}
}
を任意の11は、私はいくつかを持っている場合は特に、困難であると考えられることを持ってこれらは、衝突がないことを確認するために維持し更新することは苦痛であるようです。これに対する各参照が一意であることを確認するための簡単な解決法はありますか?静的なreadonlyを使用して、静的なコンストラクタでUnique.ID()関数を初期化しようとしましたが、これを行うと、渡されたメッセージタイプに対してswitch()を実行できません。それぞれの場合について。
オブジェクトを持っているだけで何が問題になりますか? public static readonlyオブジェクトAddGraphic = new object()、それぞれは一意になります(ランタイム内で少なくとも)? – meandmycode
読み取り専用の値に基づいて切り替えることはできません。私はとにかくデザインを考え直しています。 – Quantumplation