J'ai une Direction Enum:Est-ce qu'une méthode d'extension est le seul moyen d'ajouter une fonction à un Enum?
Public Enum Direction
Left
Right
Top
Bottom
End Enum
Et parfois, je dois obtenir l'inverse, il semble donc agréable d'écrire:
SomeDirection.Inverse()
Mais je ne peux pas mettre une méthode sur un ENUM! Cependant, je peux y ajouter un Extension Method (VS2008 +).
En VB, méthodes d'extension must be inside Modules. Je n'aime vraiment pas beaucoup les modules, et j'essaye d'écrire une classe (modérément) simple que je peux partager dans un seul fichier pour la brancher sur d'autres projets.
Les modules ne peuvent résider que dans le niveau fichier/espace de noms pour que j'ai une dans le bas du fichier maintenant:
Public Class MyClass
'...'
End Class
Public Module Extensions
<Extension()> _
Public Function Inverse(ByVal dir As Direction) As Direction
'...'
End Function
End Module
Il fonctionne, et « si elle est pas cassé, ne le répare pas ", mais j'aimerais savoir si je le fais mal et il y a un meilleur moyen avec moins de passe-partout. Peut-être dans .NET 4? Finalement, je sais que je pourrais écrire une structure qui se comporte comme une énumération, mais cela semble encore plus en arrière.
ce que vous faites est absolument correct. Microsoft propose également la même chose: http://msdn.microsoft.com/en-us/library/bb383974.aspx. – VinayC
Je vois (bonne trouvaille!), Donc ça doit être la bonne façon. Pourtant, je ne vois pas pourquoi nous ne pouvons pas mettre une méthode sur une énumération, il ne semble pas que cela puisse briser quoi que ce soit. –