Ich habe eine Situation, in der ich nur möchte, dass der Rückgabetyp für eine Methodenüberladung anders ist, aber Sie können dies nicht in C # tun.
Was ist der beste Weg, damit umzugehen? Ist die Tatsache, dass ich das brauche, meine Programmstruktur fehlerhaft?
Angesichts der Tatsache, dass dies in C # unmöglich ist, was ist der empfohlene Ansatz?
Normalerweise geben Sie den Methoden einfach verschiedene Namen.
Ein Beispiel dafür ist IDataReader
mit GetInt32
, GetInt64
etc.
Um ehrlich zu sein, glaube ich, dass dies normalerweise deutlicher macht, was Sie ohnehin tun wollen - besonders wenn Sie dann eine überladene Methode mit dem Ergebnis aufrufen:
%Vor%Angesichts der Tatsache, dass dies in C # unmöglich ist, was ist der empfohlene Ansatz?
Es hängt davon ab, warum Sie das brauchen.
Der häufigste Ansatz besteht darin, einfach einen anderen Namen zu verwenden. Das Framework tut dies in vielen Fällen, wie zum Beispiel die Konvertierungsklasse .
Wenn Sie mehrere Typen unterstützen möchten, können Sie dies über generische Methoden tun:
%Vor%Der generische Methodenansatz ist für Repostories üblich, da es normalerweise einen Typ der Basisklasse "Entity" gibt.
Tags und Links .net c# method-overloading return-type