Generics-Methodensignatur und Standard-Signatur identisch

8

nehme an, dass Sie eine Klasse haben, die Methoden mit T verwendet. Und Sie haben auch Standardmethoden mit demselben Namen.

Was passiert, wenn T vom selben Typ wie die Standardmethode ist? Die Standardmethode wird aufgerufen.

Gibt es irgendeine Möglichkeit, ihn zu zwingen, die T-Methode trotzdem anzurufen?

mit System;

%Vor%     
Dee J. Doena 09.06.2013, 07:27
quelle

3 Antworten

5

Tut mir leid, da ist es nicht.

Die einfachste Lösung besteht darin, zwei verschiedene Methodennamen zu verwenden, um den Unterschied im Verhalten anzuzeigen. Da die betreffenden Methodennamen Konstruktoren sind, haben Sie keine Kontrolle über die Namen, daher müssen Sie mindestens eine davon in eine normale Methode ändern. Zum Beispiel:

%Vor%

Persönlich würde ich beide Konstruktoren als statische Methoden ändern, so dass der Unterschied im Verhalten für den Benutzer absolut klar ist. Wenn Sie jedoch nur einen Konstruktor ändern, machen Sie den Fehler eins.

    
Christian Hayter 09.06.2013 07:47
quelle
1

Okay, ich werde meinen Kommentar zu einer Antwort machen.

Erstens, tu das NICHT. UNTERLASSEN SIE. Sie möchten, dass Menschen Ihren Code lesen können, nicht nur Computer. (Dort habe ich meine Pflicht als Mitglied des C # -Programmiererraums erfüllt)

Sekunde.

Wie beschrieben hier :

Wenn Sie Ihren Code so entwerfen, dass der Compiler nicht feststellen kann, wann er den aufgerufenen Typ kompiliert, können Sie erzwingen, dass er die generische Methode verwendet.

%Vor%     
sq33G 09.06.2013 10:29
quelle
0

Ich habe das einfach gemacht (für diesen speziellen Fall):

Ich habe Generics einen leeren geschützten Konstruktor hinzugefügt

%Vor%

Und dann habe ich für den speziellen Fall von T = String

abgeleitet %Vor%     
Dee J. Doena 09.06.2013 10:44
quelle

Tags und Links