Я пытаюсь написать 2 метода расширения для обработки типов Enum. Один из них должен использовать атрибут описания, чтобы дать более подробное объяснение параметрам перечисления и второй метод для перечисления опций перечисления и их описания для использования в списке избранных или какой-либо коллекции.Объединение методов расширения
Вы можете прочитать мой код до сих пор здесь:
<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». » на части «As Enum». –
Хорошо, исправление ... –