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)