Chers vous tous,
Récement, en transformant certains messages d'exception littéraux en message provenant de ressources, j'ai découvert quelquechose d'assez utile.
Après avoir déclaré using MonProjet.Properties;, je pouvais facilement récupérer les strings par Resources.MonMessage. Les propriétés statiques de Resources sont générées dynamiquement par rapport au string que j'insère dans les ressources.
J'aimerais pouvoir utiliser un tel concept moi-même mais je n'ai pas du tout d'idée de comment. Est-ce que le fichier ressources est pré-compilés dès qu'on quitte son édition?
Mon but est d'avoir, sans devoir créer une tonne de classe, une classe "mutante", qui expose des propriétés particulières (fixe dans le temps) selon la création de l'objet. En me relisant, je me dis que c'est incompréhensible donc voici plutot du code :-)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ... Mutant myMutant = Mutant.GetRedMutant(); myMutant.Red = "Cool"; Mutant myMutant = Mutant.GetBlueAndGreenMutant(); // myMutant.Red = "Cool"; // compilation will fails; myMutant. (intellisense présente: Blue, Green) .Blue = "Cooler"; ...Si j'ai pas été assez clair, dites-le hein :-)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class Mutant { private Mutant(params string[] propertiesToExpose) { // Hard work here :-) } public static Mutant GetRedMutant() { return new Mutant("Red"); } public static Mutant GetBlueAndGreenMutant() { return new Mutant("Blue", "Green"); } }
Je m'en vais de ce pas dans les méandres du framework à coup de Reflector!
EDIT: premier détail la classe Resources n'existe pas, je pense donc que y'a de la pré-compil dans l'air!
EDIT2: effectivement, après avoir examiné un exemple simple dans reflector, il y a bien une classe Resources auto-générée...
Partager