2010-05-21 21 views
8

OK, probablemente he entendido algo aquí, pero, por lo que yo puedo ver ...¿Se puede hacer un método de extensión estático/compartido?

método
  • Una extensión tiene que ser contenida en un módulo, no es una clase
  • No se puede hacer métodos en módulos Estático/Compartido
  • Por lo tanto, no puede usar un método de extensión en una clase sin instanciarlo.

En otras palabras, no se puede hacer un método de extensión de cadena llamado "MyExtensionMethod" y uso:

String.MyExtensionMethod("String") 

Pero en lugar ..

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

¿Es esto correcto? ¿O hay una manera en que puedo hacer que los métodos de extensión funcionen como métodos estáticos?

Respuesta

9

Usted está correcto. Los métodos de extensión solo pueden actuar en instancias de un tipo.

Y no, desafortunadamente no hay una manera astuta de escribir métodos de extensión que actúen sobre los tipos en sí mismos, comportándose como métodos estáticos.

+1

Gracias por la respuesta. Parece un descuido increíble, ya que la mayoría de las funciones de "tipo auxiliar" en objetos de marco existentes funcionan como estáticos :( –

Cuestiones relacionadas