Proszę spojrzeć na moją strukturę klasową. Myślę, że chciałbym mieć więcej zabawy z dziedziczeniem, niż to jest możliwe.C# - zaawansowane dziedziczenie
Pierwszy znajduje się baza klasa abstrakcyjna:
public abstract class PolicyDetailed
{
internal abstract DataContainer GetActiveAsset();
}
Następny tam jest inna klasa abstrakcyjna, która jest nazwą rodzajową:
public abstract class PolicyDetailed<T> : PolicyDetailed where T : DataContainer
{
internal new abstract T GetActiveAsset();
}
Wreszcie istnieje konkretna klasa polityka. AccidentContainer dziedziczy DataContainer:
public class PolicyAccident : PolicyDetailed<AccidentContainer>
{
internal override AccidentContainer GetActiveAsset()
{
return null;
}
}
Podczas kompilacji dostaję następujący błąd:
'PolicyAccident' does not implement inherited abstract member 'PolicyDetailed.GetActiveAsset()'
Nie jestem pewien, co modyfikatory należy użyć, żeby zmusić go do pracy. Może powinienem również napisać, co chciałbym osiągnąć: Mam kolekcję obiektów polityki różnych typów (np. PolicyAccident, PolicyTravel itp.), Które dziedziczą z PolicyDetailed z różnymi typami DataContainer (AccidentContainer, TravelContainer itp.). Chciałbym nazwać metodę "GetActiveAsset" na każdym z nich bez znajomości ich specyficznego typu i odnoszenia ich za pomocą PolicyDetailed. W tym samym czasie chciałbym, aby każda klasa zwracała swoją specyficzną podklasę Datacontainer. Czy to jest możliwe?
Czy naprawdę ważne jest, aby zadeklarować, że określone typy kontenerów zwracają określone typy polis? Mówisz, że chcesz odwołać zwrócone obiekty jako PolicyDetailed, i w ten sposób i tak tracisz określone informacje! (Pamiętaj, że AccidentContainer _IS_ a DataContainer i AccidentContainer mogą zostać zwrócone z metody z typem danych zwrotnych DataContainer bez zmiany jakiegokolwiek podpisu) – olagjo
Potrzebuję go w innych częściach kodu, gdzie odwołuję się do określonego typu polityki i używam jej secific container. Mogę rozważyć użycie dwóch metod - jeden zwróci obiekt DataContainer, drugi może zwrócić konkretny kontener (ale wydaje się trochę niezręczny :() – Rummy