Ich habe eine Verpflichtung verschiedene Arten von Objekten hinzufügen speichern kann (auch wenn sie unterschiedlich sind, sie die gleiche Basisklasse teilen, sie Geschwister sind.Wie ich verschiedene Arten von Objekten in einer generischen Liste in C#
Betrachten diese Klassenhierarchie
public abstract class Fruit
{
public int Quality { get; set; }
public string Name { get; set; }
}
public sealed class Apple :Fruit
{
public string Color { get; set; }
public Apple(string color ="Red")
{
Color = color;
}
}
public sealed class Orange : Fruit
{
public Orange(string type = "WithSeed")
{
Type = type;
}
public string Type { get; set; }
}
Wie kann ich so etwas wie dieses
_apples = new List<Apple>
{
new Apple
{
Name = "Fiji Apple",
Quality = 9,
Color ="Green"
},
new **Orange**
{
Name = "Indi Orange",
Quality = 7,
}
};
der Verbraucher dieser generischen Liste, um es mit der Basisklasse verwenden. Zum Beispiel:mit. Kann jemand bitte vorschlagen?
Kann es ohne Verwendung der Basisklasse erfolgen. Ich meine einige, wie, auch wenn verschiedene Arten von Objekten (Apfel, Orange, Ananas usw.) übergeben werden, um dieses Array vorzubereiten, sollten sie als Äpfel projiziert werden. – ViBi
Ich weiß nicht, was "projiziert" in diesem Zusammenhang bedeutet. Möchtest du, dass die Software einen Apple aufbaut, basierend auf dem, was du über Orange erzählst? Eine Orange hat keine Farbeigenschaft, also wie um alles in der Welt könnte sie das tun? Du kannst Äpfel und Orangen nicht mischen;) –
Wie würdest du eine Orange als "Apfel" "projizieren"? Ein 'Apple' hat eine Menge Sachen, die ein' Orange' nicht hat und umgekehrt. Sie müssten ein neues "Apple" -Objekt erstellen, das so viel wie möglich mit dem ursprünglichen "Orange" -Objekt teilt, aber dann verlieren Sie den Verweis auf das ursprüngliche Objekt sowie alle "Orange" -spezifischen Informationen. – Abion47