Natknąłem się na tym stanowisku i niekoniecznie podoba mi się żadna konkretna odpowiedź, więc pomyślałem, że dostarczę własną ...
W C# nie ma sposobu na wymuszenie wywołania metody bazowej. Dlatego też kodowanie jako takie jest uważane za antystopkę, ponieważ dalszy deweloper może nie zdawać sobie sprawy, że musi wywołać metodę bazową, jeśli klasa będzie w stanie niekompletnym lub złym.
Jednakże znalazłem okoliczności, w których ten typ funkcjonalności jest wymagany i można go odpowiednio spełnić. Zwykle klasa pochodna potrzebuje zasobu klasy bazowej. Aby uzyskać zasób, który normalnie może być eksponowany za pośrednictwem właściwości, jest on wyeksponowany za pomocą metody. Klasa pochodna nie ma innego wyjścia, niż wywołać metodę uzyskiwania zasobu, zapewniając w ten sposób wykonanie metody klasy podstawowej.
Następne logiczne pytanie, które można zadać, brzmi: dlaczego nie umieścić go w konstruktorze? Powodem jest to, że może to być kolejność operacji. W czasie, gdy klasa jest skonstruowana, może jeszcze brakować danych wejściowych.
Czy to urywa się od pytania? Tak i nie. Tak, wymusza na klasie pochodnej wywoływanie konkretnej metody klasy bazowej. Nie, nie robi tego ze słowem kluczowym override. Może to być pomocne dla osoby szukającej odpowiedzi na ten post.
Nie nauczam tego jako ewangelii, a jeśli ktoś widzi wady tego podejścia, bardzo chciałbym o tym usłyszeć.
Czy to znaczy od konstruktora gdy przesłanianie metody? – munificent