que tienen una dirección de enumeración:¿Es un método de extensión la única forma de agregar una función a un Enum?
Public Enum Direction
Left
Right
Top
Bottom
End Enum
Y a veces necesito para obtener la inversa, por lo que parece bien escribir:
SomeDirection.Inverse()
pero no puedo poner un método en una enumeración! Sin embargo, puedo agregarle un Extension Method (VS2008 +).
En VB, Métodos de extensión must be inside Modules. Realmente no me gustan mucho los módulos, y estoy tratando de escribir una clase (moderadamente) simple que pueda compartir en un solo archivo para ser conectada a otros proyectos.
módulos sólo pueden residir en el nivel de archivo/espacio de nombres, así que tengo una en la parte inferior del archivo ahora:
Public Class MyClass
'...'
End Class
Public Module Extensions
<Extension()> _
Public Function Inverse(ByVal dir As Direction) As Direction
'...'
End Function
End Module
Funciona, y "si no está roto, no lo arregles ", pero me encantaría saber si lo estoy haciendo mal y hay una mejor manera con menos repetitivo. ¿Tal vez en .NET 4?
Finalmente, sé que podría escribir una estructura que se comporta como una enumeración, pero que parece incluso más al revés.
lo que estás haciendo es absolutamente correcto. Microsoft también propone lo mismo: http://msdn.microsoft.com/en-us/library/bb383974.aspx. – VinayC
Veo (¡buen descubrimiento!), Así que debe ser el camino correcto. Aún así, no veo por qué no podemos poner un método en una enumeración, no parece que rompa nada. –