Ich war nie wirklich mit dieser Frage beschäftigt: Aber wäre es ein schreckliches Verbrechen, base.SomeMethod () bedingt in einer überschriebenen Methode zu nennen?
Beispiel wie in:
%Vor%Ich bin mir bewusst, dass dies als schlechte Praxis angesehen werden kann, aber ich habe eine solche Behauptung bisher noch nie gelesen.
Ich kann mir keinen Grund vorstellen, warum das schlecht von meinem Kopf wäre.
Es wäre viel schlimmer, die Basismethode außer Kraft zu setzen und die Funktionalität der Basismethode in einen bedingten Aufruf zu kopieren, anstatt nur die Basismethode aufzurufen.
Ich denke, es ist absolut akzeptabel. Vielleicht möchten Sie das Verhalten einer Basisklassenmethode nur unter bestimmten Umständen außer Kraft setzen oder das Verhalten erweitern, indem Sie die Basismethode aufrufen und dann Ihr eigenes Ding machen.
Klassen sollten für die Vererbung ausgelegt sein :
Wenn die Basisklasse so gestaltet ist, dass der Aufruf von Basisversionen bestimmter Methoden optional ist, ist es in Ordnung, diese Aufrufe wegzulassen.
Wenn die Basisklasse so konzipiert ist, dass Basisversionen aufgerufen werden müssen, ist es nicht in Ordnung, sie wegzulassen.
Wenn ich darüber spreche, ob dies eine "gute Praxis" ist, fehlt meiner Meinung nach der Punkt. Die Art und Weise, in der eine Klasse für die Vererbung strukturiert ist, basiert auf ihrem Zweck und Design. Die Entscheidung von ob Sie MAY oder Basisversionen einer Methode aufrufen müssen, ist Teil der öffentlichen Klassen Schnittstelle . in Bezug auf die Vererbung.
Sie können nicht entscheiden, wann es wünschenswert oder nicht wünschenswert ist, beim Überschreiben eine Basisklassenmethode aufzurufen, ohne zu verstehen, wie die Basisklasse entworfen ist und welchen Zweck jede Methode erfüllt.
Tags und Links c# inheritance