Je suis en train de mettre en place un système pour envoyer des messages entre différentes parties d'un programme que j'écris. Il y a quelques types de messages génériques ainsi que certains spécifiques à chaque partie du programme. Je voudrais éviter la pourriture de la hiérarchie inhérente à la dérivation d'une classe de message de base pour chaque type, donc j'encapsule ce type dans un int ou ushort. Ensuite, je centralise les différents types avec un espace de noms "Messages", et une classe statique avec un tas de constantes. Cependant, je suis tombé sur la question d'avoir à maintenir une liste de numéros uniques pour chaque section différente:Identificateur unique commutable en C#
namespace Messages
{
public static class Generic
{
public const Int32 Unknown = 0;
public const Int32 Initialize = 1;
...
public const Int32 Destroy = 10;
}
}
Ensuite ailleurs
namespace Messages
{
public static class Graphics
{
public const Int32 Unknown = 0;
public const Int32 AddGraphic = 11; // <-- ?
}
}
Ayant cette 11 arbitraire semble difficile, surtout si j'ai plusieurs ceux-ci, le maintien et la mise à jour pour s'assurer qu'il n'y a pas de collisions semble être une douleur. Y a-t-il une solution facile pour s'assurer que chaque référence à ceci est unique? J'ai essayé d'utiliser readonly statique, en les initialisant d'une fonction Unique.ID() dans un constructeur statique, mais si je le fais, je suis incapable de basculer() sur le type Message transmis, comme il est dit "Un type constant est attendu" pour chaque cas.
Quel est le problème avec juste avoir des objets? public static readonly object AddGraphic = nouvel objet(), chacun devient unique (dans le runtime au moins)? – meandmycode
Je ne peux pas basculer en fonction d'une valeur en lecture seule. Je repense mon design de toute façon. – Quantumplation