如何在 C# 中获取枚举项? [复制]
Posted
技术标签:
【中文标题】如何在 C# 中获取枚举项? [复制]【英文标题】:How to get items of enum in c#? [duplicate] 【发布时间】:2021-04-30 01:49:43 【问题描述】:我想根据枚举对象描述在 Razor 页面中创建一个选择选项
这是我的代码:
<div class="dropdown-box">
<select id="type-select">
@foreach (var item in Enums.OrderStatus)
<option>@item</option>
</select>
</div>
和枚举:
public enum OrderStatus
[Description("در انتظار تایید")]
PendingForAccept = 0,
[Description("تمام شده")]
Finished = 1,
[Description("لغو شده")]
Canceled = 2,
[Description("رد شده")]
Rejected = 3,
[Description("تایید شده")]
Accepted = 4
如何将此枚举的项目描述提取到字符串
【问题讨论】:
Convert enum to string<select asp-items="html.GetEnumSelectList<OrderStatus>()"
***.com/questions/13099834/…
【参考方案1】:
这是一个执行此操作的代码示例。
public static string ExtractDescription<T>(T enumVal) where T : struct
var type = enumVal.GetType();
if (!type.IsEnum)
throw new ArgumentException($"nameof(enumVal) must be an Enum", nameof(enumVal));
var memberInfo = type.GetMember(enumVal.ToString());
if (memberInfo.Length > 0)
var attributes = memberInfo[0].GetCustomAttributes(attributeType: typeof(DescriptionAttribute), inherit: false);
if (attributes.Length > 0)
return ((DescriptionAttribute)attributes[0]).Description;
return enumVal.ToString();
用法:
var s = ExtractDescription(OrderStatus.PendingForAccept)// s is "در انتظار تایید"
【讨论】:
以上是关于如何在 C# 中获取枚举项? [复制]的主要内容,如果未能解决你的问题,请参考以下文章