Ich bin neu in C # und habe mich gefragt, ob es so etwas wie private Vererbung in C # gibt (wie in C ++)?
Mein Problem ist wie folgt: Ich möchte eine Warteschlange (nennen Sie es SpecialQueue) mit den folgenden Änderungen implementieren:
In C ++ würde ich private aus der Warteschlange herausholen, nur die Methoden offen legen, die ich möchte, und andere nach meinem Willen ändern. Leider haben alle Methoden in der Warteschlange nicht den Modifikator "Override" und ich weiß nicht, wie ich das in C # erreichen soll.
Irgendwelche Hilfe?
Grüße, Dan
Komposition verwenden: Fügen Sie ein normales Queue
als Feld in Ihrem SpecialQueue
ein. . Private Vererbung ist eigentlich etwas sehr ähnlich wie Komposition.
Siehe Ссылка zur Diskussion.
Die Implementierung könnte so aussehen:
%Vor% Sie müssen weitere Funktionen / Schnittstellen hinzufügen, wenn SpecialQueue
diese unterstützen soll. Ich würde jedoch nicht empfehlen, IEnumerable
zu implementieren, da dies Peek
(das Sie verbieten möchten) zulassen würde.
Sie könnten die gleichen Schnittstellen wie ein Queue
(oder Queue<T>
) implementieren, ein Queue
als Backing-Feld haben und diese Methoden anzeigen, die die Aufrufe einfach in das Backing-Feld einschließen.
Zum Beispiel (habe die Implementierung von ICollection
in Übereinstimmung mit Queue<T>
beibehalten)
Tags und Links c# queue inheritance