Является ли метод расширения единственным способом добавить функцию в Enum?

У меня есть 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?

Наконец, я знаю, что могу написать структуру, которая ведет себя как перечисление, но кажется еще более отсталой.

8
задан Camilo Martin 27 October 2010 в 05:09
поделиться