BsonSerializationException: карта Creator для класса имеет 2 аргумента, но ни один из них не настроен

У меня есть объект TextSearchJob для хранения в MongoDB.

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

Может кто-нибудь объяснить это или указать мне на документацию? BsonSerializationException: карта Creator для класса имеет 2 аргумента, но ни один из них не настроен

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
25
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

FieldName и его тип должны совпадать с аргументом в ctor с тем же именем.

Спасибо за Ваш ответ. Это помогло мне найти способ обойти исключение.

Dude Pascalou 16.05.2022 18:09
Ответ принят как подходящий

Оказывается, если имя параметра конструктора совпадает с именем свойства, он должен быть одного типа.
Для моего конструктора я хотел иметь тип, отличный от свойства. Итак, чтобы решить мою проблему, мне пришлось указать имя параметра, отличное от имени свойства, чтобы иметь возможность использовать другой тип... Поди разберись. :/

Итак, я просто переименовал свой параметр inputs в kvInputs, и это сработало.

Я не думаю, что это хорошее решение, вы можете нарушить предположения о сериализации и не заметить, что что-то в вашем выводе будет нарушено. Я думаю, что есть ожидаемые способы обойти это. Я бы сначала попробовал поиграть с BsonClassMap.RegisterClassMap.

dododo 16.05.2022 19:04

Спасибо за совет RegisterClassMap. Я это видел, но понимаю, что он используется для настройки сериализации. Я просто хочу использовать перегрузку конструктора для своих нужд и позволить сериализацию выполняться из соглашений BSON. Кажется, что конструкторы важны для сериализации BSON. Ты знаешь почему ?

Dude Pascalou 17.05.2022 16:48
it is used to customize serialization да, он используется для настройки сериализации, в частности, какие части вашего класса участвуют в сериализации (и десериализации). Do you know why ? — если я правильно помню, ctor вызывается для создания экземпляра неизменяемых классов. Таким образом, значения, представленные в документе bson (совпадающие по имени и типу), будут переданы в качестве аргументов в ctor, а затем будет создан экземпляр класса.
dododo 17.05.2022 16:57

Другие вопросы по теме