2012-07-16 12 views
7

Ist es nicht möglich (außer anderen Namen zu verwenden), mehrere generische Methoden mit demselben Namen zu haben, aber unterschiedliche Schnittstellen zu implementieren?Zwei generische Methoden mit dem gleichen Namen

public IList<T> List<T>() where T : class, IMyInterface1 
{ 

    return mylist 
} 

public IList<T> List<T>() where T : class, IMyInterface2 
{ 

    return mylist 
} 

Danke,

Antwort

10

Nein, Sie können nicht nur durch generischen Typen constaints überlasten. Sie können über die Nummer von Typ-Parameter überladen, aber nicht auf ihre Einschränkungen.

Wenn Sie implementieren eine Schnittstelle können Sie explizite Schnittstelle Implementierung verwenden - sonst würde ich vorschlagen, nur verschiedene Namen verwenden. Ich finde oft, dass die Verwendung anderer Namen die Dinge auf jeden Fall klarer macht, um ehrlich zu sein.

Bedenken Sie, dass das Beispiel, das Sie angegeben haben, natürliche Zweideutigkeiten hervorruft - was würden Sie erwarten, wenn das Typargument implementiert beide Schnittstellen?

Verwandte Themen