У меня есть следующий класс:
Public Class PetClass
Public Enum Animal
Bird = 1
Dog = 2
Cat = 3
End Enum
Public MyPetType As Animal = Animal.Cat
(...)
End Class
Когда я наводю указатель мыши на MyPetType, VS показывает следующее:
Я хотел бы распечатать это с помощью Debug.
Для этого я использую следующий код:
<Extension()>
Public Function Description(ByVal EnumConstant As [Enum]) As String
Dim fi As Reflection.FieldInfo = EnumConstant.GetType().GetField(EnumConstant.ToString())
Dim aattr() As DescriptionAttribute = DirectCast(fi.GetCustomAttributes(GetType(DescriptionAttribute), False), DescriptionAttribute())
If aattr.Length > 0 Then
Return aattr(0).Description
Else
Return EnumConstant.ToString()
End If
End Function
Затем я использую его так:
Dim n As New PetClass
Debug.Print(Description(n.MyPetType))
Результатом будет «Cat».
Когда я отлаживаю функцию и наводя указатель мыши на последнюю строку, она точно показывает, что я хочу вывести:
Однако результат функции - «Кот», а не «Кот {3}».
Как я могу заставить его выводить «Кот {3}»?
Кто-то предложил
String.Format("{0} {{{1}}}", EnumConstant.ToString(), EnumConstant)
Но это вернуло
Cat {Cat}