2010-05-21 17 views
8

OK, ho probabilmente frainteso qualcosa qui, ma, per quanto posso vedere ...È possibile definire un metodo di estensione statico/condiviso?

metodo
  • Un'estensione deve essere contenuta in un modulo, non è una classe
  • Non si può fare metodi nei moduli Statico/Condiviso
  • Pertanto non è possibile utilizzare un metodo di estensione su una classe senza istanziarlo.

In altre parole non è possibile effettuare un metodo di estensione su stringa chiamata "MyExtensionMethod" ed impiego:

String.MyExtensionMethod("String") 

Ma invece ..

Dim test As String 
test.MyExtensionMethod("string") 

questo è corretto? O c'è un modo per far funzionare i metodi di estensione come metodi statici?

risposta

9

Sei corretto. I metodi di estensione possono agire solo su istanze di un tipo.

E no, sfortunatamente non esiste un modo furbo per scrivere metodi di estensione che agiscono sui tipi stessi, comportandosi come metodi statici.

+1

Grazie per la risposta. Sembra una supervisione incredibile, dato che la maggior parte delle funzioni di "tipo helper" su oggetti framework esistenti funzionano come statiche :( –

Problemi correlati