您如何创建一个通用函数来 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 { }
}
我需要创建一个 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 { }
}