.net – 扩展方法是向Enum添加函数的唯一方法吗?

我有一个方向枚举:
Public Enum Direction
    Left
    Right
    Top
    Bottom
End Enum

有时我需要得到逆,所以写起来似乎很好:

SomeDirection.Inverse()

但我不能把一个方法放在枚举上!但是,我可以添加一个Extension Method(VS2008).

在VB中,扩展方法must be inside Modules.我真的不喜欢那些模块,我正在尝试编写一个(适度)简单的类,我可以在一个文件中共享它以插入其他项目.

模块只能驻留在文件/命名空间级别,所以我现在在文件底部一个

Public Class MyClass
    '...'
End Class

Public Module Extensions
    <Extension()> _
    Public Function Inverse(ByVal dir As Direction) As Direction
        '...'
    End Function
End Module

它有效,“如果没有破坏,就不要修理它”,但我很想知道我做错了,并且有更好的方法,更少的样板.也许在.NET 4中?

最后,我知道我可以编写一个行为类似于枚举的结构,但这看起来更加倒退.

这确实是向枚举添加(外观)方法的唯一方法.

请注意,在C#中,扩展方法将在静态类上定义,但这是一个微不足道的差异,主要是命名法之一.

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...