Angenommen, ich habe eine Vater-Klasse, die an Kinder-Klassen vererbt wird, später möchte ich mehr Dinge in die Vater-Klasse einfügen, ohne die ursprüngliche Vater-Klasse zu modifizieren, bitte bring mir bei, wie ich es machen könnte.Wie fügen Sie Zeug in bestehende Basisklasse in C#?
Lassen Sie mich meine Frage klären. Alle Wertsachen und Methoden in Vater werden automatisch für alle Kinderklassen zugänglich sein, richtig? Zum Beispiel:
public class Father
{
public int a;
public int b;
public int c()
{
return a+b;
}
}
public class Child : Father
{
private int d=a*b+c();
}
Jetzt mag ich ein boolean e und ein Verfahren f() zu Vater hinzufügen, damit mein Kind direkt darauf zugreifen können, ohne diese Zeilen direkt in Vater hinzufügen oder eine neue Klasse zwischen Vater machen und Kind. Ist das möglich? Wie könnte ich es tun?
Sie nutzen könnten [parti Al-Klassen] (https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods). Sie ändern noch die ursprüngliche Elternklasse, aber in einer separaten Datei. Sie können auch [Erweiterungsmethoden] (https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods) verwenden, um Ihrer Parent-Klasse zusätzliche Funktionen hinzuzufügen ohne die ursprüngliche Klasse zu ändern. – sniels
Sie haben Recht, dass Sie teilweise hinzufügen müssen, was die ursprüngliche Klasse ändert, obwohl von diesem Punkt an es möglich ist. Erweiterungsmethoden können auf Schnittstellen und Klassen angewendet werden. In Zukunft können Sie sogar Erweiterungseigenschaften hinzufügen. Daher sollten Erweiterungsmethoden die Aufgabe erfüllen. Obwohl der Zweck nicht klar ist. Ich denke, dass Sie ein besseres OOP-Design herausfinden müssen, um Ihr Ziel zu erreichen. – sniels
Wenn ich mich recht erinnere, muss die "ursprüngliche Klasse" auch partiell sein, damit die Teilklassen funktionieren. Was ist wenn das NICHT der Fall ist? Und wenn ich die Erweiterungsmethoden verwende, wäre es genauso wie ich eine neue Klasse erstellen würde. Es besiegt den Zweck hier! Gibt es einen anderen Weg als diese beiden, die den Trick machen werden? Vielen Dank! –