При сериализации в базу данных я использую глобальные соглашения:
ConventionRegistry.Register(
"Defaults and ENUMs",
new ConventionPack
{
new IgnoreIfDefaultConvention(true),
new EnumRepresentationConvention(BsonType.String),
},
f => true);
Учитывайте это перечисление:
public enum HistoryOperation
{
Added,
Deleted,
Updated,
}
При сериализации со значением «Added» поле этого типа будетигнорируется, поскольку «Added» отображается в 0, что также является значением по умолчанию для int, который является базовым типом для этого перечисления.
В настоящее время я обошел это, добавив «None» в качестве первого перечисления, но этоне работает для других перечислений, которые я не могу контролировать в своем проекте.
Можно ли с этим что-нибудь сделать?За исключением удаления или замены IgnoreIfDefaultConvention.
Конечно, можно утверждать, что это IS значение по умолчанию, но перечисления являются чем-то немного другим с моей точки зрения.