2010-01-05 12 views
12

Duplicar posibles:
Can I add extension methods to an existing static class?¿Métodos de extensión en una clase estática?

Sé que puedo hacer lo siguiente para extender una clase. Tengo una clase estática que me gustaría extender. ¿Cómo podría hacerlo? Me gustaría escribir 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 –

Respuesta

15

No se puede tener métodos de extensión de clases estáticas debido a los métodos de extensión sólo son aplicables a instanciable tipos y clases estáticas no pueden ser instanciadas .

Comprobar el código ..

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

     return false; 
    } 

primer parámetro a IsEmail() es la instancia de tipo de extender y no sólo el tipo en sí. Nunca puede tener una instancia de un tipo estático.

10

No puede ampliar las clases estáticas en C#. Los métodos de extensión funcionan definiendo métodos estáticos que aparecen como métodos de instancia en algún tipo. No puede definir un método de extensión que amplíe una clase estática.

0

Es posible que desee convertir su clase estática en singleton. Entonces solo habrá una instancia de la clase. Y puede usar métodos de extensión porque es una instancia.

Esto se proporciona si tiene acceso al código fuente de la clase.

+1

¿Podemos esperar una explicación para esto (odio el singleton)? –

+8

Bueno, no esperarías solo una instancia de "Odio el singleton", ¿o sí? –

+0

¿Cómo puede alguien eliminar mi odio de odio único? Detesto el comentario de soltero. –

Cuestiones relacionadas