通用枚举约束

我继承了一个网络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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章