.net - 扩展方法是将函数添加到枚举的唯一方法吗?

标签 .net vb.net enums extension-methods boilerplate

我有一个方向枚举:

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# 中,扩展方法将在静态类上定义,但这是一个微不足道的区别,主要是命名法之一。

关于.net - 扩展方法是将函数添加到枚举的唯一方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4030136/

相关文章:

.net - 在 VB.NET 中检查空的 TextBox 控件

c# - 颠覆 : How to unversion the BIN and OBJ folders

c++ - 返回枚举而不是索引

c# - 带空格的枚举 .TryParse 不起作用 - C#

java - 在 mysql 表 hibernate 中的枚举列上执行条件查询时出错

c# - 任务不会被垃圾收集

c# - 在 C# 中使用 SendKeys 发送 ctrl-space?

c# - 如何在新线程中强制执行

c# - ASP.NET C# 中最常用的扩展和辅助函数

vb.net - 如何在 VB.NET 中将十六进制偏移量转换为两字节指针?