Я реализую систему для отправки сообщений между различными частями программы, которую я пишу. Существуют некоторые общие типы сообщений, а также некоторые специфические для каждой части программы. Я хотел бы избежать иерархии rot, присущей генерации базового класса сообщений для каждого типа. Поэтому я инкапсулирую этот тип в int или ushort. Затем я централизую различные типы с пространством имен «Сообщения» и статическим классом с кучей констант. Тем не менее, я столкнулся с вопросом о необходимости поддерживать список уникальных номеров для каждого отдельного раздела:Переключаемый уникальный идентификатор в 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() в статическом конструкторе, но если я это сделаю, то я не могу переключить() по переданному типу сообщения, так как он говорит: «Ожидается постоянный тип», для каждого случая.
Что-то не так с просто объектами? public static readonly object AddGraphic = new object(), каждый становится уникальным (по крайней мере, во время выполнения)? – meandmycode
Я не могу переключиться на основе значения readonly. Я все равно переосмысливаю свой проект. – Quantumplation