Bonjour,

J'ai d'une classe qui "wrappe" System.String et qui utilise les opérateurs impilictes pour l'affectation et la lecture.

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);
}
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 : 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; }
}
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 : 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.