我继承了一个网络api,该api在代码中定义了很多枚举,我想将它们转换为名为EnumView的视图模型类,以便可以按以下方式对其进行序列化...
{Id:值,名称:enumName }
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,
由于缺少通用枚举约束的问题,解决此问题的最佳方法是什么?
您可以使用:Id = Convert.ToInt32(enumValue)而不是强制类型转换(int)
如果要在编译时添加一些“约束”以检查类型,则可以设置“ where T:struct”,这至少会阻止设置类类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句