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