A. *_*esa 2 c# enums serialization mongodb
我有一个属性类型为 的类List<SomeEnum>。像这样的东西:
public enum MyEnum
{
A,
B
}
public class MyClass
{
public string Id { get; set; }
public List<MyEnum> Values { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我已经在EnumRepresentationConvention以这种方式使用:
ConventionRegistry.Register("EnumStringConvention", new ConventionPack { new EnumRepresentationConvention(BsonType.String) }, t => true);
Run Code Online (Sandbox Code Playgroud)
尽管如此,该Values属性仍被序列化为一个整数数组(简单的枚举属性被正确地处理为整数)。似乎在列表序列化的上下文中不使用该约定。
如何强制序列化程序写入字符串而不是整数?
在 MyClass的属性中ConventionRegistry.Register()添加数据注释[BsonRepresentation(BsonType.String)],而不是调用Values。
public class MyClass
{
public string Id { get; set; }
[BsonRepresentation(BsonType.String)]
public List<MyEnum> Values { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在此更改之后collection.InsertOne(obj);保存:
{
"_id" : "1",
"Values" : [
"A",
"B"
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3156 次 |
| 最近记录: |