C# 枚举从数据库一直到 AngularJS 常量



我需要一些关于在整个Web项目中普遍使用枚举的指导。更详细地说,我的意思是我们的查找表,如 PersonType、PrivilegeType、ContactType 等将在 dll 中创建(或 C# 文件,每个枚举一个文件(,比如 Enums.dll,然后将枚举作为常量添加到我们的"通用"AngularJS 模块中,例如:

angular
.module('common', [])
.constant('ePrivilegeType', {
NoPermissions: 1,
ViewOnly: 2,
ViewAndUpdate: 3
})
.constant('ePersonType', {
Administration: 1,
Student: 2,
Father: 3,
Mother: 4
});

这种工作流程是否常见且可以接受?我们如何实现这种工作流程?通过我们所有的项目使用枚举,这将使我们的生活更加轻松。

如果这些匹配仅用于向用户显示(例如在组合框中(,我使用了一个为我提供这些值的 Web api。因此,在angularjs中使用的数据对象中仍然是这个神奇的数字。但是从/api/enum/privilegeTypes下的服务器中,您将获得以下格式的对象数组

[{
value: 1,
name: "NoPermissions",
description: "This is not allowed"
}, ...]

在服务器(在 .net 中(上,您可以创建一个简单的类(例如EnumWrapper(和工厂方法(例如EnumWrapper.From<PrivilegeType>()EnumWrapper.From(enumTypeName)(,它遍历所有枚举值(使用Enum.GetValues()(并创建所需的列表并返回它。

public enum PrivilegeType
{
[Description("Access not allowed")]
NoPermissions = 1,
[Description("Read only ")]
ViewOnly = 2,
[Description("Read and write access")]
ViewAndUpdate = 3
}

通过使用这种方法,数据对象中仍然有幻数,但您可以使用一些有意义的文本向用户显示可用选项,如果您更改枚举值或名称,您只需在服务器端而不是客户端更改它们。

最新更新