您如何创建一个通用函数来 return 枚举列表的所有名称和值?

How do you create a generic function that will return all the names and values of a list of Enums?

我需要创建一个 API 来 return Web 应用程序中各种枚举的名称和值,以便我可以在 select 控件中使用这些名称和值在页面上。如何将枚举列表放入可以序列化为 json 的形式,并为每个枚举提供名称和值?

我从来没有创建过可以传入类型并获取值的方法,因此使用这个答案 () 来解决一个稍微不同的问题,我想出了以下可能有帮助的答案有人。当然有更好的方法,但这是我想出的方法。

感谢@Ilya Ivanov 给我的答案。

首先,EnumModel class:

public class EnumModel
{
  public int Value { get; set; }
  public string Name { get; set; }
}

接下来是私有函数:

private List<EnumModel> GetValues(Type enumType)
{
  if (!typeof(Enum).IsAssignableFrom(enumType))
    throw new ArgumentException("enumType should describe enum");

  var values = Enum.GetValues(enumType).Cast<int>();

  var list = new List<EnumModel>();

  foreach(var value in values)
  {
    list.Add(new EnumModel()
    {
      Value = value,
      Name = Enum.GetName(enumType, value)
    });
  }

  return list;
}

最后,调用该私有函数以获得您需要的响应:

public List<EnumModel> SegmentTypeEnum
{
  get
  {
    return GetValues(typeof(SegmentType));
  }
  set { }
}