Was passiert in diesem Selbstreferenzierungs-Vererbungscode?

8

Ich habe diesen Code von einem anderen Programmierer geschrieben und ich kann mich nicht darum kümmern

%Vor%

Nach meinem Verständnis implementiert die Klasse AppBase des Typs T die Schnittstelle IApp , wo T implementiert ???

Kann jemand den letzten Teil erklären?

    
Abhi.Net 29.03.2016, 22:25
quelle

1 Antwort

7

Die Einschränkung für T bedeutet in diesem Fall, dass T AppBase<T> implementieren und einen Standardkonstruktor haben muss. Effektiv müssen Sie sich selbst als Typ übergeben.

Dies wird normalerweise als Versuch unternommen, das Typsystem zu umgehen und den Zugriff auf den Implementierungstyp innerhalb der Basisklasse über typeof(T) zu ermöglichen. Zum Beispiel gegeben:

%Vor%

Sie können dann Code schreiben wie:

%Vor%

Was die Typinformation für AppBaseFoo ausgibt. Dies ist jedoch nicht idiotensicher - zum Beispiel "bricht" das Unterklassieren dies. Hinzufügen:

%Vor%

Und dann schreiben:

%Vor%

Bewirkt das Drucken der gleichen AppBaseFoo Information.

    
Reed Copsey 29.03.2016, 22:42
quelle

Tags und Links