In breve, no, non puoi.
Risposta lunga, i metodi di estensione sono solo zucchero sintattico. IE:
se si dispone di un metodo di estensione su stringa diciamo:
public static string SomeStringExtension(this string s)
{
//whatever..
}
Quando poi si chiami:
myString.SomeStringExtension();
il compilatore appena lo trasforma in:
ExtensionClass.SomeStringExtension(myString);
Come potete vedere, non c'è modo di farlo per i metodi statici.
E un'altra cosa mi è venuta in mente: quale sarebbe davvero il punto di poter aggiungere metodi statici su classi esistenti? Si può solo avere il proprio classe di supporto che fa la stessa cosa, così ciò che è veramente il benfit di essere in grado di fare:
Bool.Parse(..)
vs.
Helper.ParseBool(..);
in realtà non portare molto al tavolo ...
come può essere un duplicato? Questo vuole aggiungere un metodo di estensione che si comporta come un metodo statico (classe) a una classe che può avere istanze come Boolean, mentre l'altra domanda chiede come aggiungere un metodo di estensione a una classe statica –
sarebbe bello se la sintassi C# supportata come: "DependencyProperty statico pubblico Registro (static DependencyProperty x, string name, Type propertyType, Type ownerType, FrameworkPropertyMetadata typeMetadata)", in modo che potrei usarlo in Silverlight per ottenere la compatibilità con la sintassi WPF (per avvolgere l'implementazione di valore di Dr.WPF della coercizione del valore per DependencyProperty). Nota il parametro "static DependencyProperty" invece di "this DependencyProperty" (in alternativa anziché statico, magari potrebbero usare altre parole chiave come type o typeof) –
Lo stesso problema con 'Enum.Parse' con la fornitura di una stringa. Estendere una stringa sfortunatamente non è così ovvio quanto estendere un int è. C# manca sintassi! – C4u