有没有办法将枚举存储为字符串名称而不是序数值?
例子:
想象一下我有这个枚举:
public enum Gender
{
Female,
Male
}
现在如果某个虚构的用户存在
...
Gender gender = Gender.Male;
...
它将作为 { ... "Gender": 1 ... }
存储在 MongoDb 数据库中但我更喜欢这样的 { ... "Gender": "Male"... }
这可能吗?自定义映射、反射技巧等等。
我的上下文:我在 POCO 上使用强类型集合(好吧,我标记 AR 并偶尔使用多态性)。我有一个工作单元形式的瘦数据访问抽象层。所以我不是序列化/反序列化每个对象,但我可以(并且确实)定义一些 ClassMap。我用的是官方的 MongoDb 驱动 + fluent-mongodb。
最佳答案
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
public class Person
{
[JsonConverter(typeof(StringEnumConverter))] // JSON.Net
[BsonRepresentation(BsonType.String)] // Mongo
public Gender Gender { get; set; }
}
https://stackoverflow.com/questions/6996399/