using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(emTypes.Monday.GetName());
}
}
internal static class Constructor
{
/// <summary>
/// 获取枚举描述特性值
/// </summary>
/// <typeparam name="TEnum"></typeparam>
/// <param name="eum">枚举值</param>
/// <returns>枚举值的描述/returns>
public static string GetName<TEnum>(this TEnum eum)
where TEnum : struct
{
Type type = eum.GetType();
//使用反射获取该枚举的成员信息
foreach (var memberInfo in type.GetMembers())
{
//判断名称是否相等
if (memberInfo.Name != eum.ToString()) continue;
//反射出自定义属性
foreach (Attribute attr in memberInfo.GetCustomAttributes(true))
{
var test = attr as DisplayAttribute;
if (test == null) continue;
return test.Name;
}
}
//如果没有描述特性的值,返回该枚举值得字符串形式
return eum.ToString();
}
}
public enum emTypes
{
[Display(Name = "星期一")]
Monday,
[Display(Name = "星期二")]
Tuesday
}
internal class DisplayAttribute : Attribute
{
public string Name { get; set; }
}
}
将枚举值中文显示
最新推荐文章于 2024-07-30 16:45:01 发布