12Fermer14
ZephLe 15/05/2009 à 19:46
Bon, faute de mieux je suis parti sur la solution du ./12

Par contre j'ai un autre problème (ouééé grin) : je cherche à faire quelque chose que je ne sais pas comment réaliser en C# (en C++ ça prendrait 3 lignes, mais là...)

J'aurais besoin de créer un objet, disons "Modifier", qui prenne en paramètre une référence vers une variable (ou un attribut) et qui soit capable par la suite de modifier cette variable. Le détail c'est que par "modifier" je ne parle pas d'appeler ses méthodes et autres, mais bien de remplacer la valeur de la variable. Le problème c'est que pour ça il me faut conserver une référence vers la variable en question, mais que le mot-clé "ref" du C# se limite aux paramètres des fonctions. Certes il y a bien des pointeurs, mais c'est "unsafe" et j'ai cru comprendre qu'il fallait prendre pas mal de précautions pour éviter que la CLR ne modifie les adresses lors d'un passage du GC.

Voilà idéalement comment j'aimerais que la classe s'utilise :

http://www.mirari.fr/g4iY

En C++ ça serait très facile : il suffirait que "myRef" soit de type "T&" et qu'il soit initialisé dans le constructeur de "Modifier". Mais en C# la seule solution que j'ai trouvée consiste à passer à "Modifier" non pas une référence vers la variable mais deux delegates (un setter et un getter). Ça marche très bien mais ça m'oblige à déclarer deux méthodes pour chaque variable que je veux "Modifier"-er (voilà ce que ça donne) : très lourd.

Y-a-t'il moyen de faire autrement ?

Merci smile