gpt4 book ai didi

.net - Enum 可以完全序列化吗?

转载 作者:行者123 更新时间:2023-11-28 02:54:00 27 4
gpt4 key购买 nike

我有一个在 WCF 上运行的 .NET 应用程序。在该应用程序中,我将各种“类型”定义为枚举(“CourseType”、“PresentationType”、“HierarchyType”等)。这些会自动与数据库同步,因此我可以编写漂亮的代码,例如:

public enum CourseType {
Online = 1,
Classroom = 2
}

...

if(course.Type == CourseType.Online) {
// do stuff on the server
}

我想知道是否有人知道序列化整个枚举的好方法,以便我可以在 JavaScript 中编写类似的语句。

请注意,我询问仅序列化值。我想要的是最终得到某种 JavaScript 对象,如下所示:

CourseType = {
'online' : 1,
'classroom': 2
};

我知道,我可以通过反射来做到这一点,但我希望有某种内置的解决方案......

最佳答案

在我看来,如果枚举相对静态且不会经常更改,则使用具有匿名类型的 JSON 序列化器效果非常好:

new { CourseType.Online, CourseType.Classroom }

但是,如果您正在寻找无需维护即可处理动态或多个枚举的东西,您可以创建一些迭代名称值对并创建要序列化的字典的东西(不需要反射)。

public static IDictionary<string, int> ConvertToMap(Type enumType)
{
if (enumType == null) throw new ArgumentNullException("enumType");
if (!enumType.IsEnum) throw new ArgumentException("Enum type expected", "enumType");

var result = new Dictionary<string, int>();
foreach (int value in Enum.GetValues(enumType))
result.Add(Enum.GetName(enumType, value), value);

return result;
}

编辑

如果您需要 JSON 序列化器...我真的很喜欢使用 JSON.NET http://james.newtonking.com/projects/json-net.aspx

关于.net - Enum 可以完全序列化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3129276/

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