Im folgenden Code habe ich eine Eigenschaft in der Basisklasse, die eine Liste von benutzerdefinierten Objekten zurückgibt. In der Elternklasse überschreibe ich diese Eigenschaft und in der Definition der Überschreibung greife ich auf den Verweis auf die Liste der benutzerdefinierten Objekte aus der Basisklasse zu und füge 2 Objekte hinzu.Überschreiben der Basiseigenschaft und Zugreifen auf die Referenz in der Basis
Bevor ich zurückkomme, setze ich einen Haltepunkt in den Code und überprüfe den Inhalt der Basiseigenschaft und bemerke, dass die zwei neuen Objekte nicht da sind. Dann habe ich versucht, den Verweis auf die Liste der Objekte in der Basisklasse lokal zu speichern und fügte zwei Objekte in der Liste wieder hinzu. Ich stelle fest, dass in der lokalen Referenz die 2 neuen Objekte hinzugefügt wurden.
Allerdings zeige ich mit beiden Methoden auf die gleiche Referenz, so dass ich in der Lage sein sollte, Objekte hinzuzufügen, indem ich auf die base.TestProperty verweise. Irgendeine Idee, warum das nicht funktioniert?
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;
}
}
Implementierung von base.TestProperty pls – Will
Klingt wie base.TestProperty 'neue Liste zurück()'. –
Sie haben nicht genügend Code zur Verfügung gestellt, um das beschriebene Problem zu reproduzieren. – Servy