Ho un senso Enum:Un metodo di estensione è l'unico modo per aggiungere una funzione a un Enum?
Public Enum Direction
Left
Right
Top
Bottom
End Enum
e qualche volta ho bisogno di ottenere l'inverso, così sembra bello scrivere:
SomeDirection.Inverse()
ma non posso mettere un metodo su un enum! Tuttavia, posso aggiungere un Extension Method (VS2008 +) ad esso.
In VB, Metodi di estensione must be inside Modules. Non mi piacciono molto i moduli, e sto cercando di scrivere una classe (moderatamente) semplice che possa condividere in un singolo file per essere inserita in altri progetti.
I moduli possono risiedere solo nel livello di file/namespace quindi ho uno nella parte inferiore del file ora:
Public Class MyClass
'...'
End Class
Public Module Extensions
<Extension()> _
Public Function Inverse(ByVal dir As Direction) As Direction
'...'
End Function
End Module
Funziona, e "se non è rotto, non aggiustarlo ", ma mi piacerebbe sapere se sto sbagliando e c'è un modo migliore con meno standard. Forse in .NET 4?
Infine, so che potrei scrivere una struttura che si comporta come un enum, ma sembra ancora più indietro.
quello che stai facendo è assolutamente corretto. Microsoft propone anche la stessa: http://msdn.microsoft.com/en-us/library/bb383974.aspx. – VinayC
Vedo (buona scoperta!), Quindi deve essere la strada giusta. Tuttavia, non vedo perché non possiamo mettere un metodo su un enum, non sembra che rompa nulla. –