Bonjour,
J'ai d'une classe qui "wrappe" System.String et qui utilise les opérateurs impilictes pour l'affectation et la lecture.
Jusqu'ici tout va bien dans le meilleur des mondes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public static implicit operator MyString(string str) { return new MyString(str); }
Dans une autre classe j'ai un membre et une proprtiété de type MyString:
Toujours dans cette autre classe j'ai un tableau qui contient une référence au membre mMyString (obtenu par réfléxion sur la propriété myString).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 MyString mMyString; public MyString myString { get { return mMyString; } set { mMyString = value; } }
Le problème: quand j'utilise l'opérateur implicite d'affectation. par ex:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 MyString test = new MyString(); test = "toto";
Il se crée un nouvelle instance de MyString qui sera evidemment différente de celle contenue dans le tableau cité plus haut.
Est-il possible d'une manière ou d'une autre de forcer la nouvelle instance à "ecraser" l'ancienne et prendre sa référence? (réflexion? unmanaged?..)
Le probème est contournable en ajoutant un propriété value à MyString et en affectant de manière classique, mais sachant que je "wrappe" la plupart des types de bases j'aimerai vraiment garder l'affectation implicite pour gagner en lisibilité.
merci pour votre aide.
Partager