Bonjour, je ne sais pas trop par quel bout prendre ma question.
Elle concerne les classes et méthodes génériques... mettons que je veuille passer un peu n'importe quoi donc une string ou une liste/dictionary de string, peu importe. Le problème se pose surtout pour les dictionary / liste je vais donner un bout de code basique pour me faire comprendre. Mettons une petite classe:
Machin selon les circonstances j'ai envie que ça soit un dictionary<string, string>, une List<string> peu importe....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class Machin<T>: { public T Test{get; set;} public Machin() { // Comment initialiser Test ? } }
Je sais que si dans une autre fonction après avoir créé mon nouvel objet Machin:
je vais me manger un bug dans les gencives, qui sera d'ailleurs pas clair selon avec quoi j'ai couplé lié au fait que mon dictionary n'aura pas été initialisé. Mais dans le constructeur de Machin je ne peux pas initialiser par un Test = new T();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 //... Machin<Dictionary<string, string>> chouette = new Machin<Dictionary<string, string>>(); chouette.Test.Add(a,b);
La seule façon que j'ai vu qu'il était possible de faire c'est après la création de l'objet, dans mon autre portion de code, de faire donc:
or je me dis qu'il doit certainement y avoir une façon d'initialiser Test avec le constructeur, pour ne pas avoir à chaque fois à réécrire une ligne après avoir créé un nouvel objet Machin, mais je sèche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 //... Machin<Dictionary<string, string>> chouette = new Machin<Dictionary<string,string>>(); chouette.Test = new Dictionary<string,string>; chouette.Test.Add(a,b);
Désolé mais j'ai repris mon code hier, après un mois d'arrêt, un passage sur python pour faire un "petit" programme, ce qui fait que je suis pas mal embrumé.
Dans mon cas cette fonction est plus complexe que là, dans mon code, j'ai juste imaginez un bout de code pour l'essence. A la base ça sert couplé avec un decoupage du code pour lire dans la base de donnée, et je me suis mangé toute la journée un bug que je viens à peine de comprendre car au niveau des exceptions c'était très loin d'amener à une erreur facilement interprétable, mais bref le soucis venait de cette initialisation.
Merci d'avance.
Partager