У меня есть объект TextSearchJob для хранения в MongoDB.
Я новичок в базе данных, и я не знаю, почему у меня есть эта ошибка с версией IDictionary (справа), в то время как у меня нет ошибки с версией IEnumerable (слева):
MongoDB.Bson.BsonSerializationException: Creator map for class TextSearchJob has 2 arguments, but none are configured.
Может кто-нибудь объяснить это или указать мне на документацию?






FieldName и его тип должны совпадать с аргументом в ctor с тем же именем.
Оказывается, если имя параметра конструктора совпадает с именем свойства, он должен быть одного типа.
Для моего конструктора я хотел иметь тип, отличный от свойства. Итак, чтобы решить мою проблему, мне пришлось указать имя параметра, отличное от имени свойства, чтобы иметь возможность использовать другой тип... Поди разберись. :/
Итак, я просто переименовал свой параметр inputs в kvInputs, и это сработало.
Я не думаю, что это хорошее решение, вы можете нарушить предположения о сериализации и не заметить, что что-то в вашем выводе будет нарушено. Я думаю, что есть ожидаемые способы обойти это. Я бы сначала попробовал поиграть с BsonClassMap.RegisterClassMap.
Спасибо за совет RegisterClassMap. Я это видел, но понимаю, что он используется для настройки сериализации. Я просто хочу использовать перегрузку конструктора для своих нужд и позволить сериализацию выполняться из соглашений BSON. Кажется, что конструкторы важны для сериализации BSON. Ты знаешь почему ?
it is used to customize serialization да, он используется для настройки сериализации, в частности, какие части вашего класса участвуют в сериализации (и десериализации). Do you know why ? — если я правильно помню, ctor вызывается для создания экземпляра неизменяемых классов. Таким образом, значения, представленные в документе bson (совпадающие по имени и типу), будут переданы в качестве аргументов в ctor, а затем будет создан экземпляр класса.
Спасибо за Ваш ответ. Это помогло мне найти способ обойти исключение.