2010-03-07 16 views

Répondre

8

Les méthodes d'extension sont appelées sur une instance d'un objet.

myObj.ExtensionMethod(); 

Si vous avez une classe statique, vous ne pouvez pas en avoir une instance. Par conséquent, il n'y a rien à appeler la méthode d'extension.

+0

Merci pour la réponse. C'est une honte mais pas une grosse perte. – dotnetdev

5

Parce qu'un extension method doit prendre une instance de la classe, il étend en tant que son premier paramètre. Et évidemment vous ne pouvez pas passer une instance de File parce que c'est une classe statique et ne peut pas avoir d'instances.

5

En sens inverse, si vous regardez le definition of any extension method, le premier paramètre est toujours l'instance de l'objet sur lequel il est appelé mis en évidence par le mot-clé this. Logiquement, ce comportement ne peut pas fonctionner sur une classe statique car aucune instance n'est présente.

Exemple d'une méthode d'extension - voir d'abord ce param

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