私が書いているプログラムのさまざまな部分の間でメッセージを送信するシステムを実装しています。一般的なメッセージ タイプと、プログラムの各部分に固有のメッセージ タイプがあります。各タイプの基本メッセージ クラスから派生することに固有の階層の腐敗を回避したいので、このタイプを int または ushort にカプセル化しています。次に、"Messages" 名前空間と、一連の定数を持つ静的クラスを使用して、さまざまな型を一元化します。ただし、異なるセクションごとに一意の番号のリストを維持する必要があるという問題に遭遇しました。
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 を持つことは難しいように思えます。特に、これらが複数ある場合は、衝突がないように維持および更新するのが面倒なようです。これへの各参照が一意であることを確認するための簡単な解決策はありますか? 静的読み取り専用を使用して、静的コンストラクターの Unique.ID() 関数からそれらを初期化しようとしましたが、そうすると、「定数型が必要です」と表示されているため、渡された Message 型を switch() できませんケースごとに。