我有许多C#枚举,其中一些启用了标志。例如:
[Flags]
public enum MyEnum
{
item1 = 0x0000,
item2 = 0x0008
}
我将其克隆到JavaScript中,如下所示:
my.namespace.MyEnum = {
ITEM1: "item1",
ITEM2: "item2"
}
我正在使用全局WebApi转换器将枚举映射到字符串,因为我更喜欢将字符串与REST API结合使用:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());
问题是,如果我创建一个使用此枚举的属性,则它将无法使用按位运算(即my.namespace.MyEnum.ITEM1 | my.namespace.MyEnum.ITEM2)并获得所需的结果(“ item1,item2 ”)。
除了删除字符串转换器之外,是否有任何适当的方法可以为JavaScript中的标志枚举实现这种DataContract + JS API?
最佳答案
尽管我既不喜欢Java枚举也不喜欢此类标志运算符,但我认为这可能与您想要的相当接近:
[my.namespace.MyEnum.ITEM1, my.namespace.MyEnum.ITEM2].join(", ") //=> "item1, item2"
要么
var join = function() {
return Array.prototype.join.call(arguments, ", ");
};
join(my.namespace.MyEnum.ITEM1, my.namespace.MyEnum.ITEM2); //=> "item1, item2"
关于javascript - 在JavaScript中标记枚举和JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17555142/