열거 형을 사용하고 가능한 모든 선택을 사용자에게 표시하고 하나를 선택한 다음 다시 전달할 수있는 함수를 만들려고합니다. Generics는 enum으로 제한하지 않습니다. 앞뒤로 캐스팅 할 코드가 있지만 동일한 열거 형을 받아 들여 반환하고 싶습니다.초록 열거 형 선택 상자
이 코드는 내가 원하는만큼 있지만뿐만 아니라 작동 : 문자열
으로공공 기능 getEnumSelection (Windows.Forms.IWin32Window, ByVal의 sampleValue [열거 바와 같이, 문자열로 ByVal의 자막으로 ByVal의 소유자)
Dim names As String() = [Enum].GetNames(sampleValue.GetType)
Using mInput As New dlgList
mInput.ListBox1.Items.Clear()
For Each name As String In names
mInput.ListBox1.Items.Add(name)
Next
mInput.ShowDialog(owner)
Return mInput.ListBox1.SelectedItem.ToString
End Using
End Function
실행 후 호출자가 [enum] .parse를 열거 형에 직접 연결할 수 있으므로이 수동 단계를 제거하고 싶습니다.
동일한 열거 형을 반환하거나이 함수에서받은 값으로 파싱을 다시 수행 할 수는 있지만이 행을 허용하지 않는 것 같습니다. Dim result As Object = [열거 형] .Parse (GetType (sampleValue), mInput.ListBox1.SelectedItem.ToString, True)
이는 sampleValue가 형식이 아님을 나타냅니다. 그래서 ... 어떻게 sampleValue의 타입을 파싱 할 것인가?
또는 열거 형마다 매핑 기능을 손으로 코딩하지 않고도 사용자가 쉽게 enum 값을 선택할 수있는 또 다른 방법이 있습니까?
는 돌아 DirectCast ([열거] .Parse (GetType을 (T), mInput.ListBox1.SelectedItem.ToString), T)를 및 공공 기능 getEnumSelection (T의 변경 구조로) (ByVal 소유자 As Windows.Forms.IWin32Window, 문자열로 ByVal 자막) T – Maslow
예, 죄송합니다, 그건 내가 의미했던 것이 었습니다 - 부주의 한 복사 - 내 부분에 붙여 넣기. 나는 그 지위를 편집 할 것이다. –