gpt4 book ai didi

c# - 通用枚举约束

转载 作者:太空狗 更新时间:2023-10-30 01:33:57 25 4
gpt4 key购买 nike

我继承了一个 web api,它在代码中定义了很多枚举,我想将它们转换为一个名为 EnumView 的 View 模型类,以便它们可以按如下方式序列化...

{Id: value, Name: enumName}

public class EnumView
{
public int Id { get; set; }
public string Name { get; set; }
}

将通用类限制为枚举类型后,我收到警告

Constraint cannot be special class '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”,它至少会阻止设置类类型。

关于c# - 通用枚举约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32202682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com