2010-03-07 13 views

Respuesta

8

Los métodos de extensión se denominan en una instancia de un objeto.

myObj.ExtensionMethod(); 

Si tiene una clase estática, no puede tener una instancia de la misma. Por lo tanto, no hay nada para llamar al método de extensión.

+0

Gracias por la respuesta. Es una pena, pero no una gran pérdida. – dotnetdev

5

Porque un diseño extension method debe tomar una instancia de la clase que se extiende como su primer parámetro. Y obviamente no puede pasar una instancia de File porque es una clase estática y no puede tener instancias.

5

Si mira el definition of any extension method, el primer parámetro es siempre la instancia del objeto sobre el que se llama evidenciado por la palabra clave this. Lógicamente, este comportamiento no puede funcionar en una clase estática porque no hay ninguna instancia presente.

Ejemplo de un método de extensión - ver este primer parámetro

public static class MyExtensions 
{ 
    public static int WordCount(this String str) 
    { 
     return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length; 
    } 
} 
Cuestiones relacionadas