use*_*552 5 vb.net enums enumeration tostring
我想为每个枚举值重写 toString 方法。例如,我知道在Java中可以按如下方式完成:
public enum Language_Culture_Names{
English {
@Override
public String toString() {
return "en-GB";
}
},
Spanish {
@Override
public String toString() {
return "es-ES";
}
},
Catalan {
@Override
public String toString() {
return "ca-ES";
}
}
}
System.out.println(Language_Culture_Names.English); -> returns en-GB
System.out.println(Language_Culture_Names.Spanish); -> returns es-ES
System.out.println(Language_Culture_Names.Catalan); -> returns ca-ES
Run Code Online (Sandbox Code Playgroud)
那么如何在 VB.NET 中做到这一点呢?
理想情况下,您应该使用Class自己定制的常量,因为Enums它们是数字常量而不是字符串常量。
但是,如果您必须使用Enum并且正在寻找通用解决方案,我将这样做:
Module首先,使用以下代码将 a 添加到您的项目中:
Imports System.ComponentModel
Imports System.Runtime.CompilerServices
Module Module1
<Extension()> _
Public Function ToString2(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
End Module
Run Code Online (Sandbox Code Playgroud)
我们命名我们的函数是ToString2因为它Enum.ToString已经存在,并且不能被覆盖。您可以将其命名为其他名称。
现在,在声明 的类中Enum,用Description属性修饰枚举成员:
Imports System.ComponentModel '<-- be sure to include this Namespace
Public Enum Language_Culture_Names
<Description("en-GB")> English = 1
<Description("es-ES")> Spanish = 2
<Description("ca-ES")> Catalan = 3
End Enum
Run Code Online (Sandbox Code Playgroud)
最后转储该Enum.ToString方法并使用我们的新Enum.ToString2方法。
例如
TextBox1.Text = Language_Culture_Names.English.ToString2()
Run Code Online (Sandbox Code Playgroud)
HTH。
| 归档时间: |
|
| 查看次数: |
1568 次 |
| 最近记录: |