Dans le code ci-dessous, j'ai une propriété dans la classe de base qui renvoie une liste d'objets personnalisés. Dans la classe parent, je substitue cette propriété et dans la définition du remplacement, j'accède à la référence à la liste des objets personnalisés de la classe de base et y ajoute 2 objets.Substitution de la propriété de base et accès à la référence dans la base
Avant de retourner, je mets un point d'arrêt dans le code et vérifie le contenu de la propriété de base et remarque que les deux nouveaux objets ne sont pas là. Ensuite, j'ai essayé de stocker la référence à la liste des objets de la classe de base localement et ajouté à nouveau deux objets dans la liste. Je remarque que dans la référence locale les 2 nouveaux objets ont été ajoutés. Cependant, en utilisant les deux méthodes, je pointe vers la même référence, donc je devrais être capable d'ajouter des objets en me reportant à la base.TestProperty. Une idée de pourquoi ça ne marchera pas?
public override List<CustomObject> TestProperty
{
get
{
List<CustomObject> temp = base.TestProperty;
CustomObject obj1 = new CustomObject()
{
Name = "My Name"
};
CustomObject obj2 = new CustomObject()
{
Name = "Your Name"
};
// Adding to the base list
base.TestProperty.Add(obj1);
base.TestProperty.Add(obj2);
// Adding to temp list, which still points to the base list
temp.Add(obj1);
temp.Add(obj2);
// Base object doesnot contain obj1 and obj2, but the temp object does.
return base.TestProperty;
}
}
mise en œuvre de base.TestProperty pls – Will
Ressemble retourne base.TestProperty 'nouvelle liste()'. –
Vous n'avez pas fourni assez de code pour reproduire le problème que vous avez décrit. – Servy