Zmiana/nadpisanie typu właściwości w klasie pochodnej

0

Potrzebuję utworzyć klasę pochodną, która dla jednej z odziedziczonych właściwości zmieni/nadpisze jej typ. Klasy generyczne odpadają, bo typy muszą być konkretnego typu. Poniżej to, co chciałbym osiągnąć

public class Base
{
    public virtual List<BaseType> Property1 { get; set; }
    public string Property2 { get; set; }

    public void BaseMethod1()
    {
        //...
    }
    public void BaseMethod2()
    {
        //...
    }
}

public class Derived : Base
{    
    public override List<DerivedType> Property1 { get; set; } //DerivedType może, ale nie musi dziedziczyć po BaseType

    public void DerivedMethod1()
    { 
        //...
    }
}
1

No to powinieneś zrobić klasę generyczną, której z jakiegoś powodu nie chcesz zrobić (powodu nie zrozumiałem).

0
some_ONE napisał(a):

No to powinieneś zrobić klasę generyczną, której z jakiegoś powodu nie chcesz zrobić (powodu nie zrozumiałem).

Nie chcę zrobić, bo ta właściwość jest wykorzystywana w metodach, a co za tym idzie jeśli przekaże typ BaseType to wszystko będzie ok, ale jak przekażę jakikolwiek inny np. XYZ to program się wykrzaczy. Jak nie będzie innego wyjścia to zrobię te klasy generyczne, ale może jest jakieś lepsze rozwiązanie.

1

To nałóż ograniczenie na argument generyczny, aby musiał być typu BaseType.

Najlepsze rozwiązanie to nauczyć się języka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1