我需要一个枚举或类似的东西来做这样的事情:
公共枚举 MyStringEnum {
[StringValue("Foo A")] Foo = "A",
[StringValue("Foo B")] Foo = "B" }
这可能吗?我的示例,我返回一个数据集,其值表示为 A、B、C、D、E .. 我需要一个解决方案将其返回为字符串表示形式?
我想显而易见的是创建一个扩展方法或只有一个 switch 语句并返回一个字符串的东西..还有其他更干净的解决方案吗?
问候,
戴夫
这是我们 MVC 应用程序用来检索枚举的显示名称的东西。它使用自定义属性和扩展方法来检索枚举显示名称。
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
public class EnumDisplayNameAttribute : Attribute
{
public EnumDisplayNameAttribute(string displayName)
{
DisplayName = displayName;
}
public string DisplayName { get; set; }
}
public static string GetDisplayName(this Enum enumType)
{
var displayNameAttribute = enumType.GetType()
.GetField(enumType.ToString())
.GetCustomAttributes(typeof(EnumDisplayNameAttribute), false)
.FirstOrDefault() as EnumDisplayNameAttribute;
return displayNameAttribute != null ? displayNameAttribute.DisplayName : Enum.GetName(enumType.GetType(), enumType);
}
枚举上的用法:
public enum Foo
{
[EnumDisplayName("Foo Bar")]
Bar = 0
}
取回显示名称:
var f = Foo.Bar;
var name = f.GetDisplayName();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)