我创建了这个枚举
public enum Days
{
[Display("Monday")]
Mon,
[Display("Tuesday")]
Tue,
[Display("Wednesday")]
Wed,
[Display("Thursday")]
Thu,
[Display("Friday")]
Fri,
[Display("Satrday")]
Sat,
}
Run Code Online (Sandbox Code Playgroud)
我想得到字符串"星期一".我试过这样做
Console.WriteLine(Days.mon);
Run Code Online (Sandbox Code Playgroud)
但是给了我"星期一"而不是"星期一".星期一有没有办法获得字符串?
我已经增强了这个答案,为您提供了一个更全面的解决方案,具有更好的语义语法.
using System;
using System.ComponentModel;
public static class EnumExtensions {
// This extension method is broken out so you can use a similar pattern with
// other MetaData elements in the future. This is your base method for each.
public static T GetAttribute<T>(this Enum value) where T : Attribute {
var type = value.GetType();
var memberInfo = type.GetMember(value.ToString());
var attributes = memberInfo[0].GetCustomAttributes(typeof(T), false);
return (T)attributes[0];
}
// This method creates a specific call to the above method, requesting the
// Description MetaData attribute.
public static string ToName(this Enum value) {
var attribute = value.GetAttribute<DescriptionAttribute>();
return attribute == null ? value.ToString() : attribute.Description;
}
}
Run Code Online (Sandbox Code Playgroud)
此解决方案在Enum上创建了一对扩展方法,以便您可以执行所需的操作.我Enum稍微增强了你的代码,使用DisplayAttribute类的语法System.ComponentModel.DataAnnotations.
using System.ComponentModel.DataAnnotations;
public enum Days {
[Display(Name = "Sunday")]
Sun,
[Display(Name = "Monday")]
Mon,
[Display(Name = "Tuesday")]
Tue,
[Display(Name = "Wednesday")]
Wed,
[Display(Name = "Thursday")]
Thu,
[Display(Name = "Friday")]
Fri,
[Display(Name = "Saturday")]
Sat
}
Run Code Online (Sandbox Code Playgroud)
要使用上述扩展方法,您现在只需调用以下内容:
Console.WriteLine(Days.Mon.ToName());
Run Code Online (Sandbox Code Playgroud)
要么
var day = Days.Mon;
Console.WriteLine(day.ToName());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1096 次 |
| 最近记录: |