opérateurs implicites et références d'objets
Bonjour,
J'ai d'une classe qui "wrappe" System.String et qui utilise les opérateurs impilictes pour l'affectation et la lecture.
Code:
1 2 3 4 5
|
public static implicit operator MyString(string str)
{
return new MyString(str);
} |
Jusqu'ici tout va bien dans le meilleur des mondes.
Dans une autre classe j'ai un membre et une proprtiété de type MyString:
Code:
1 2 3 4 5 6 7
|
MyString mMyString;
public MyString myString
{
get { return mMyString; }
set { mMyString = value; }
} |
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).
Le problème: quand j'utilise l'opérateur implicite d'affectation. par ex:
Code:
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.