1
我想写2扩展方法来处理枚举类型。一种是使用description属性给枚举选项提供一些更好的解释,另一种是列举枚举选项及其描述以用于选择列表或某种集合中。结合扩展方法
你可以阅读我的代码到现在的位置:
<Extension()> _
Public Function ToDescriptionString(ByVal en As System.Enum) As String
Dim type As Type = en.GetType
Dim entries() As String = en.ToString().Split(","c)
Dim description(entries.Length) As String
For i = 0 To entries.Length - 1
Dim fieldInfo = type.GetField(entries(i).Trim())
Dim attributes() = DirectCast(fieldInfo.GetCustomAttributes(GetType(DescriptionAttribute), False), DescriptionAttribute())
description(i) = If(attributes.Length > 0, attributes(0).Description, entries(i).Trim())
Next
Return String.Join(", ", description)
End Function
<Extension()> _
Public Function ToListFirstTry(ByVal en As System.Enum) As IEnumerable
Dim type As Type = en.GetType
Dim items = From item In System.Enum.GetValues(type) _
Select New With {.Value = item, .Text = item.ToDescriptionString}
Return items
End Function
<Extension()> _
Public Function ToListSecondTry(ByVal en As System.Enum) As IEnumerable
Dim list As New Dictionary(Of Integer, String)
Dim enumValues As Array = System.Enum.GetValues(en.GetType)
For Each value In enumValues
list.Add(value, value.ToDescriptionString)
Next
Return list
End Function
所以我的问题是,这两种扩展方法不工作是很好。将枚举选项转换为ienumerable的方法不能使用扩展方法来获取描述。
我发现所有类型的例子都做了两者之一,但从来没有结合在一起。我究竟做错了什么?我仍然对这些新的.NET 3.5的东西很陌生。
我想这样做,但后来我得到这个错误:“Option Strict On禁止从'Object'到'System.Enum'的隐式转换。”在“作为枚举”部分。 – 2009-09-05 20:17:41
好的,修复... – 2009-09-05 20:23:35