Mam problem z nadpisaniem właściwości pochodzącej z interfejsu. Mam jedną klasę podstawową, która implementuje interfejs. Ta klasa ma około 10 podklas. Podklasy powinny w niektórych przypadkach nadpisywać właściwość, która pochodzi z interfejsu.Zastępowanie właściwości w podklasie interfejsu Baseclass
Mój problem polega na tym, że mam dostęp do właściwości, nie wiedząc, jaki typ obiektu ma obiekt, a obiekt zawsze zwraca wartość właściwości klasy bazowej zamiast nadpisanej wartości właściwości podklasy.
Przykład Kod uproszczone:
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"; }
}
}
w innej klasie mam dostępu do właściwości, nie wiem, czy obiekt jest rodzaj podstawy lub podklasy w tej chwili
List<BaseClass> listBase = new List<BaseClass>();
listBase.Add(new BaseClass());
listBase.Add(new SubClass());
foreach (BaseClass obj in listBase)
{
Console.WriteLine(obj.Info);
}
wyjściowa:
Something
Something
Potrzebna moc:
Something
Something else
((SubClass) obj) .Info wyświetli komunikat "Coś innego" , ale w tym momencie nie wiem, jakiego rodzaju obiekt jest obiektem. (Mam około 10 różnych podklas).
Czy muszę rzucać wszystkie przedmioty na prawdziwą klasę? Mam na liście 100-200 obiektów i około 10 różnych klas. Czy jest jakiś inny sposób na zrobienie tego?
każda pomoc doceniona :)
Czy przesłanianie/wirtualna metoda rozwiązuje problem? –
dziękuję, działa dobrze w ten sposób :) – Koryu