我想使用这篇文章中的方法,为我的枚举类型实现更友好的 ToString() 输出。我想知道如何在Entity Framework的自动生成的枚举代码中实现它?我需要修改代码生成模板吗(如果需要,能否请有经验的人给我一些指导,因为模板相当复杂),还是有其他替代方法?
谢谢!
谢谢!
Enums不需要使用任何变通方法,它们在最新的Entity Framework中得到了支持。
为了使您的枚举对您的网站更加友好,您可以使用属性。这是一个示例属性:
public class EnumDescription : Attribute
{
public string Text { get; private set; }
public EnumDescription(string text)
{
this.Text = text;
}
}
使用属性标记您的枚举:
public enum DaylightSavingTime
{
[EnumDescription("Detect automatically")]
Auto = 0,
[EnumDescription("DST always on")]
AlwaysOn = 1,
[EnumDescription("DST always off")]
AlwaysOff = 2
}
添加扩展以启用ToDescription()
方法:
public static class EnumExtensions
{
public static string ToDescription(this Enum enumeration)
{
Type type = enumeration.GetType();
MemberInfo[] memInfo = type.GetMember(enumeration.ToString());
if (null != memInfo && memInfo.Length > 0)
{
object[] attrs = memInfo[0].GetCustomAttributes(typeof(EnumDescription), false);
if (null != attrs && attrs.Length > 0)
return ((EnumDescription)attrs[0]).Text;
}
return enumeration.ToString();
}
}
使用方法:
var blabla = DaylightSavingTime.Auto;
Console.WriteLine(blabla.ToDescription());
输出:
自动检测