Oki, ca marche mais si par exemple on voulait redéfinir le résultat pour obtenir une chaîne différente (par exemple lors d'une localisation) on fait comment à part passer par une bonne grosse table de conversion ?
----------------------------
C++ forever
C# amateur
Sinon tu peux aussi utiliser la reflection en définissant un attribut Description sur les champs que tu veux , avec une petite méthode "utilitaire" qui te servira pour tout tes enums :
enum Test
{
[Description("Ma valeur de test #1")]
Test1,
[Description("Ma valeur de test #2")]
Test2,
Test3,
}
ou sinon tu utilise une structure dans ce style la
public struct machin
{
public string truc = "une chaine";
public string bignou = "une autre chaine";
...
}
ou sinon si tu veux faire un truc plus violent, tu peux creer une structure d'objet, avec un objet comme ca :
public class MySpecialEnum
{
public readonly string Value;
public readonly int ID;
public MySpecialEnum(int id, string s)
{
Value = s;
ID = id;
}
public static bool operator==(MySpecialEnum a, MySpecialEnum b)
{
return (a.ID == b.ID);
}
public override string ToString()
{
return (Value);
}
}
et ensuite ta structure :
public struct MyEnums
{
public MySpecialEnum truc = new MySpecialEnum(1, "une chaine avec truc ecrit dedans");
public MySpecialEnum machin = new MySpecialEnum(2, "une chaine qui dit machin");
public MySpecialEnum arf = new MySpecialEnum(3, "arf arf!!");
}
et ensuite admettons que tu es une instance de ta structure MyEnums qui s'appel myen, tu peut faire
if (my_special_enum_object == myen.truc)
{
// ici c'est l'operateur == qui se charge du boulot, catte methode permet de comparer des int et non pas de faire implicitement des string.Compare(), qui sont beaucoup plus couteux
}
et si tu as besoin d'afficher :
txtAffiche.Text = myen.truc;
// en theorie ceci devrais implicitement appeler la fonction ToString() qu'on a redefini, et sinon au pire myen.truc.ToString();
ah oui j'oubliais, tu peux aussi ne pas te preoccuper des ID a la creation des objets MySpecialEnum en mettant une variable static auto-incremental au sein de la classe.
ceci dit, la methode que j'ai mis plus au te permet d'avoir un control precis sur tes ID, car tu peut vouloir quelques fois avec deux objets different avec les memes ID.
ca reste violent comme méthode, je me demande ou le compilo met le code
qu'il génère pour générer ses strings d'enum. enfin bref, pour le
moment, je sens que le switch va rester comme ca et au pire, je fais un
hashtable.
----------------------------
C++ forever
C# amateur
une petite question qui n'as rien a voir avec le sujet mais qui peut toutefois interesser du monde, pour avoir la coloration syntaxique, est-ce que tu fait ca a la pogne ou est-ce qu'il y a une balise particuliere qui explique a une moulinette qu'on veut qu'elle le fasse tout seul pour nous ?
ou est-ce que tu code dans VS et le copier/coller garde la couleur ? (je suis pas sur de ca)
Si, le c/c depuis VS se fait en RTF avec conservation des couleurs quand on colle dans la FreeTexBox :-)
J'ai juste un bout de code qui remplace les \par par des \line dans le presse papier, sinon il y a une ligne passée entre chaque ligne quand on colle dans la FTB.