我有一个 Direction 枚举:
Public Enum Direction
Left
Right
Top
Bottom
End Enum
有时候我需要得到反向结果,所以写成这样似乎更好:
SomeDirection.Inverse()
但是我不能在枚举上放置方法!然而,我可以为其添加一个扩展方法(VS2008+)。
在VB中,扩展方法必须在模块内部。我真的不太喜欢模块,我正在尝试编写一个(适度)简单的类,可以在单个文件中共享,并将其插入其他项目中。
模块只能驻留在文件/命名空间级别,因此现在我在文件底部有一个模块:
Public Class MyClass
'...'
End Class
Public Module Extensions
<Extension()> _
Public Function Inverse(ByVal dir As Direction) As Direction
'...'
End Function
End Module
它能够正常工作,"如果没有问题,就不要修复它",但我很想知道是否有更好的方法来减少样板代码。也许在.NET 4中会有更好的方法吗?
最后,我知道我可以编写一个像枚举一样行为的结构,但那似乎更加反向。