Перечисления по умолчанию игнорируются при сериализации с IgnoreIfDefaultConvention - PullRequest
0 голосов
/ 28 сентября 2019

При сериализации в базу данных я использую глобальные соглашения:

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 значение по умолчанию, но перечисления являются чем-то немного другим с моей точки зрения.

...