У меня есть Direction Enum:
Public Enum Direction
Left
Right
Top
Bottom
End Enum
И иногда мне нужно получить обратное , поэтому было бы неплохо написать:
SomeDirection.Inverse()
Но я не могу поместить метод в перечисление! Однако я могу добавить к нему метод расширения (VS2008 +).
В VB методы расширения должны находиться внутри модулей . Мне действительно не нравятся модули, и я пытаюсь написать (умеренно) простой класс, который я могу использовать в одном файле для подключения к другим проектам.
Модули могут находиться только в пространстве файлов / имен уровень, так что теперь у меня есть один внизу файла:
Public Class MyClass
'...'
End Class
Public Module Extensions
_
Public Function Inverse(ByVal dir As Direction) As Direction
'...'
End Function
End Module
Он работает, и «если он не сломан, не чините его», но мне бы хотелось знать, делаю ли я это неправильно и есть лучший способ с меньшим количеством шаблонов. Может быть, в .NET 4?
Наконец, я знаю, что могу написать структуру, которая ведет себя как перечисление, но кажется еще более отсталой.