我接手了一个有很多枚举定义的web api,我想将它们转换为一个称为EnumView的视图模型类,以便可以像下面这样进行序列化...
{Id: 值, Name: 枚举名称}
public class EnumView
{
public int Id { get; set; }
public string Name { get; set; }
}
将Generic类限制为枚举类型后,我收到了警告
约束不能是特殊类'System.Enum'
这是我要使用的通用转换器...
public class EnumViewConverter<T> where T : Enum
{
public static List<EnumView> ConvertToView()
{
List<EnumView> enumViews = new List<EnumView>();
T[] enumValues = (T[])Enum.GetValues(typeof(T));
foreach (var enumValue in enumValues)
{
var enumView = new EnumView
{
Id = (int)enumValue,
Name = Enum.GetName(typeof(T), enumValue)
};
enumViews.Add(enumView);
}
return enumViews;
}
}
如果 T 没有被限制为枚举类型,则以下转换无法编译...
Id = (int)enumValue,
由于缺乏通用枚举约束的问题,如何解决这个问题呢?