我有一个方向枚举:
Public Enum Direction
Left
Right
Top
Bottom
End Enum
有时我需要得到相反的结果,所以写起来看起来不错:
SomeDirection.Inverse()
但是我不能在枚举上放一个方法!但是,我可以向它添加一个扩展方法(VS2008+)。
在 VB 中,扩展方法必须在 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 中?
最后,我知道我可以编写一个行为类似于枚举的结构,但这似乎更加倒退。