1
열거 형을 처리하기 위해 2 개의 확장 메서드를 작성하려고합니다. enum 옵션에 대한 설명을보다 잘 설명하기 위해 description 속성을 사용하는 방법과 selectlist 또는 어떤 종류의 콜렉션에서 사용할 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 물건에 새로운 있습니다.
내가 노력
이그러나 나는이 오류 (그것은 VB 쿼리에서 명시 적으로 입력 범위 변수 같은 C#에서 같은 일을 의미하지 않는다 보인다.) :
이 시도 : "Option Strict On은 'Object'에서 'System.Enum'으로의 암시 적 변환을 허용하지 않습니다." "열거 형으로"부분. –
좋아요, 수정 중입니다 ... –