Ich habe ein Problem mit dem Überschreiben einer Eigenschaft, die von einer Schnittstelle kommt. Ich habe eine Basisklasse, die ein Interface implementiert. Diese Klasse hat ungefähr 10 Unterklassen. Die Unterklassen sollten in einigen Fällen die Eigenschaft überschreiben, die von der Schnittstelle kommt.Eigenschaft in Unterklasse von Basisklasse überschreiben Schnittstelle
Mein Problem ist, dass ich auf die Eigenschaft zugreifen, ohne zu wissen, welche Art von Klasse das Objekt hat und das Objekt immer den Basisklasseneigenschaftswert anstelle des überschriebenen Unterklasseneigenschaftswerts zurückgibt.
Beispielcode vereinfacht:
public interface Inf
{
string Info
{
get;
}
}
public class BaseClass : Inf
{
public string Info
{
get { return "Something"; }
}
}
public class SubClass : BaseClass
{
new public string Info
{
get { return "Something else"; }
}
}
in einer anderen Klasse i haben die Eigenschaft zugreifen zu können, ich weiß nicht, ob der Objekttyp der Basis oder Unterklasse in diesem Moment ist
List<BaseClass> listBase = new List<BaseClass>();
listBase.Add(new BaseClass());
listBase.Add(new SubClass());
foreach (BaseClass obj in listBase)
{
Console.WriteLine(obj.Info);
}
Ausgang:
Something
Something
wollte Ausgabe:
Something
Something else
((SubClass) obj) .Info würde "Etwas anderes" ausgeben aber in diesem bestimmten Moment weiß ich nicht, welche Art von Klasse das Objekt ist. (Ich habe ungefähr 10 verschiedene Unterklassen).
Muss ich alle Objekte in ihre wahre Klasse umwandeln? Ich habe 100-200 Objekte in dieser Liste und ungefähr 10 verschiedene Klassen. Oder gibt es einen anderen Weg, dies zu tun?
jede Hilfe geschätzt :)
Würde überschreiben/virtuelle Methode Ihr Problem lösen? –
danke, funktioniert auf diese Weise :) – Koryu