Erzielen von speziellen Seitentypen Rückgaben in C#
Die Entwicklung benutzerdefinierter Seitentypen im .NET -Framework stellt häufig Herausforderungen beim Zugriff auf diese Seiten von Steuerelementen vor. Der Standard -Rückgabetyp stand normalerweise zu einem weniger spezifischen Seitentyp. In diesem Artikel wird untersucht, wie Sie diese Einschränkung überwinden und Ihren speziellen Seitentyp zurückgeben.
Rückgabetypkovarianz und ihre Auswirkungen
Rückgabetypkovarianz ermöglicht im Wesentlichen eine Überschreibung einer Basisklassenmethode, die einen allgemeinen Typ mit einer Methode zurückgibt, die einen spezifischeren Subtyp zurückgibt. Dies verbessert die Art und bietet eine größere Flexibilität.
Betrachten Sie eine Basisklasse Enclosure
und ihre abgeleitete Klasse Aquarium
:
abstract class Enclosure { public abstract Animal Contents(); } class Aquarium : Enclosure { public override Fish Contents() { ... } }
Hier gibt die Aquarium
Contents()
Methode Fish
einen spezifischeren Typ zurück als die Animal
der Basisklasse. Dies ermöglicht den Verbrauchern, sicher auf Animal
zu werfen, während sie von der Präzision von Aquarium
.
c#von 's Einschränkungen und eine praktische Lösung
c# unterstützt aufgrund von CLR -Einschränkungen nicht von Natur aus die Kovarianztyp -Kovarianz. Eine Problemumgehung simuliert jedoch dieses Verhalten effektiv:
abstract class Enclosure { protected abstract Animal GetContents(); public Animal Contents() { return this.GetContents(); } } class Aquarium : Enclosure { protected override Animal GetContents() { return this.Contents(); } public new Fish Contents() { ... } }
Diese Strategie verwendet in der Basisklasse eine geschützte Abstract GetContents()
-Methode. Die abgeleitete Klasse überschreibt es und gibt den speziellen Typ (Fish
) zurück und enthüllt gleichzeitig eine neue Contents()
-Methode mit dem speziellen Rückgabetyp. Dieser Ansatz hält eine starke Typisierung zur Kompilierungszeit bei. Der Schlüssel ist die Verwendung von new
, um die Basisklassenmethode auszublenden, sodass der spezifischere Rückgabetyp verwendet werden kann. Dies bietet die Vorteile der Kovarianz, ohne sich auf direkte Sprachunterstützung zu verlassen.
Das obige ist der detaillierte Inhalt vonKann eine Kovarianztyp -Rückgabetyp für spezielle Seitentypen erreicht werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!