gpt4 book ai didi

c# - 枚举(estring)的字符串表示?

转载 作者:行者123 更新时间:2023-11-30 19:32:45 25 4
gpt4 key购买 nike

我需要一个枚举或类似的东西来做这样的事情:

public enum 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();

关于c# - 枚举(estring)的字符串表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4876558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com