2 Stimmen

Kann man eine Erweiterungsmethode für einen Typ statt für eine Instanz eines Typs haben?

Ich kann eine Erweiterungsmethode wie diese haben:

DateTime d = new DateTime();
d = d.GetRandomDate();

GetRandomDate ist meine Erweiterungsmethode. Allerdings macht das oben genannte nicht viel Sinn. Was besser wäre, ist:

DateTime d = DateTime.GetRandomDate();

Ich weiß aber nicht, wie man das macht. Eine Erweiterung Methode erstellt als:

public static DateTime GetRandomDate(this System.DateTime dt)

fügt nur die Funktion GetRandomDate() im ersten Beispiel hinzu, nicht aber im zweiten Beispiel. Gibt es eine Möglichkeit, das gewünschte Verhalten zu erreichen?

3voto

Rob Fonseca-Ensor Punkte 15345

Nein - nicht möglich

Sie müssen auf die Methode in Ihrer eigenen statischen Klasse zugreifen...

2voto

Hans Kesting Punkte 35936

Warum sollten Sie das wollen? Wenn Sie eine statische Methode aufrufen wollen, warum dann nicht direkt?

OK, Sie müssen etwas verwenden wie DateTimeHelper.GetRandomDate() anstelle von DateTime.GetRandomDate() .

0voto

Perplexed Punkte 123

Nur werfen diese da draußen, aber könnten Sie erstellen eine partielle statische Klasse von datetime und werfen die Erweiterung Methode auf das?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X