2010-01-05 11 views
12

Mögliche Duplizieren:
Can I add extension methods to an existing static class?Erweiterungsmethoden für eine statische Klasse?

Ich weiß, dass ich das unten tun können, um eine Klasse zu erweitern. Ich habe eine statische Klasse, die ich erweitern möchte. Wie könnte ich es tun? Ich möchte schreiben ClassName.MyFunc()

static public class SomeName 
{ 
    static public int HelperFunction(this SomeClass v) 
+2

http://stackoverflow.com/questions/249222/can-i-add-extension-methods-to-an-existing-static-class –

Antwort

15

Sie können keine Erweiterungsmethoden auf statische Klassen haben, weil Erweiterungsmethoden nur anwendbar sind Typen und statische Klassen INSTANTIABLE lässt sich nicht instanziiert.

prüfen Sie diesen Code ..

public static bool IsEmail(this string email) 
    { 
     if (email != null) 
     { 
      return Regex.IsMatch(email, "EmailPattern"); 
     } 

     return false; 
    } 

Erster Parameter zu istEmail() ist die Verlängerung Typ-Instanz und nicht nur die Art selbst. Sie können niemals eine Instanz eines statischen Typs haben.

10

Sie können statische Klassen in C# nicht erweitern. Erweiterungsmethoden funktionieren, indem statische Methoden definiert werden, die als Instanzmethoden für einen bestimmten Typ angezeigt werden. Sie können keine Erweiterungsmethode definieren, die eine statische Klasse erweitert.

0

Sie könnten Ihre statische Klasse in eine singleton verwandeln. Dann wird es nur eine Instanz der Klasse geben. Und Sie können Erweiterungsmethoden verwenden, weil es eine Instanz ist.

Dies wird vorausgesetzt, Sie haben Zugriff auf den Quellcode der Klasse.

+1

Können wir eine Erklärung dafür erwarten (ich hasse Singleton)? –

+8

Nun, Sie würden nicht nur eine Instanz von "Ich hasse Singleton" erwarten, oder? –

+0

Wie kann jemand löschen meine Ich hasse Singleton Ich hasse Singleton Kommentar? –

Verwandte Themen