vb.net - 如何显示像 Visual Studio 工具提示这样的枚举?
问题描述
我有以下课程:
Public Class PetClass
Public Enum Animal
Bird = 1
Dog = 2
Cat = 3
End Enum
Public MyPetType As Animal = Animal.Cat
(...)
End Class
当我将鼠标移到 MyPetType 上时,VS 显示以下内容:
我想用调试打印这个。
我正在使用以下代码来执行此操作:
<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”而不是“Cat {3}”。
我怎样才能让它输出“Cat {3}”?
有人建议
String.Format("{0} {{{1}}}", EnumConstant.ToString(), EnumConstant)
但这又回来了
Cat {Cat}
解决方案
试试这个
Public Class PetClass
'
' test
'
' Dim foo As New PetClass(PetClass.Animal.Dog)
' Debug.WriteLine(foo.AsString)
' output: Dog{2}
Public Enum Animal
none = 0
Bird = 1
Dog = 2
Cat = 3
End Enum
Public MyPetType As Animal = Animal.none
Public Sub New(WhichAnimal As Animal)
Me.MyPetType = WhichAnimal
End Sub
Public Function AsString() As String
Return String.Format("{0}{{{1}}}", Me.MyPetType, Me.MyPetType.ToString("D"))
End Function
End Class
概括为扩展,
<Extension()>
Public Function Description(ByVal EnumConstant As [Enum]) As String
Return String.Format("{0}{{{1}}}", EnumConstant, EnumConstant.ToString("D"))
End Function
推荐阅读
- java - 执行新线程后代码块未运行
- python - 如何使用python从.txt文件中提取段落?
- ssh - Gitlab CI/CD ssh 添加返回输入密码
- sql - 无法修改映射到非键保留表的列?
- android - 用于 GPS 跟踪应用中通信的消息协议 Pubnub 或 Rabbitmq
- bash - 如何使用 git 的 pathspec globbing 非递归地“git reset”?
- javascript - 在 JavaScript 完成执行之前,Canvas 不会更新
- c - 将数组从 c 传递到程序集,然后反转数组
- missing-data - 交叉表包括缺失值
- java - 由于 ASYNC_NETWORK_IO 在 java 代码中出现 DB IO 问题