En bref, non, vous ne pouvez pas. Réponse longue, les méthodes d'extension sont juste du sucre syntaxique. IE:
si vous avez une méthode d'extension sur la chaîne disons:
public static string SomeStringExtension(this string s)
{
//whatever..
}
Lorsque vous appelez ensuite:
myString.SomeStringExtension();
le compilateur se juste en:
ExtensionClass.SomeStringExtension(myString);
Comme vous pouvez le voir, il n'y a aucun moyen de faire cela pour les méthodes statiques.
Et une autre chose m'est venue à l'esprit: quel serait vraiment le point de pouvoir ajouter des méthodes statiques sur des classes existantes? Vous pouvez juste avoir votre propre classe d'aide qui fait la même chose, donc ce qui est vraiment le benfit de pouvoir faire:
Bool.Parse(..)
contre
Helper.ParseBool(..);
n'apporte pas vraiment grand-chose à la table ...
comment cela peut-être un doublon? Cela veut ajouter une méthode d'extension qui se comporte comme une méthode statique (classe) à une classe qui peut avoir des instances comme Boolean, alors que l'autre question demande comment ajouter une méthode d'extension à une classe statique –
ce serait bien si C# supportait la syntaxe comme: "public static DependencyProperty Register (static DependencyProperty x, nom de chaîne, Type propertyType, Type ownerType, FrameworkPropertyMetadata typeMetadata)", afin que je puisse l'utiliser dans Silverlight pour obtenir la compatibilité avec la syntaxe WPF (pour encapsuler la contrainte de valeur de Dr.WPF pour DependencyProperty). Notez le paramètre "DependencyProperty" statique au lieu de celui "this DependencyProperty" (alternativement au lieu de statique peut-être ils pourraient utiliser un autre mot-clé comme type ou typeof) –
Même problème avec 'Enum.Parse' avec fournir une chaîne. L'extension d'une chaîne n'est malheureusement pas aussi évidente que l'extension d'un int. C# manque de syntaxe! – C4u