170 похожих чатов

Есть класс BotOptions. У него есть поле MessengersOptions, которое хранит

настройки мессенджеров в классе MessengerOptions. У каждого мессенджера соответственно свои настройки, которые наследуются от MessengerOptions. Возникает проблема, что если конфигурация мессенджеров хранится в json, то ее невозможно десериализовать, так как конкретный тип неизвестен во время десериализации. На что можно заменить поле MessengersOptions в BotOptions, не подключая сторонние библиотеки?

8 ответов

13 просмотров

Dictionary, если всё настолько плохо. Либо у того же newtonsoft есть опция сериализации вместе с именем типа

SightRo- Автор вопроса
SomebodyOdd
Dictionary, если всё настолько плохо. Либо у того ...

Для словаря там вложенность неизвестна. Newtonsoft пока не хочется тащить. Может есть другой вариант, где можно сделать красиво или изложенной информации недостаточно?

Почему нельзя десериализовать если конкретный тип неизвестен?

SightRo
Для словаря там вложенность неизвестна. Newtonsoft...

Dictionary<string, object>, где object может быть таким же словарём, или примитивом. Но проще будет протащить библиотеку и не изобретать велосипедов.

Гугли "c# json deserialize abstract class"

SightRo- Автор вопроса
Andrew Shurunov
Почему нельзя десериализовать если конкретный тип ...

Нужно чтобы поля унаследованного типа сохранились.

SightRo
Нужно чтобы поля унаследованного типа сохранились.

Я понимаю. Это решается либо включением специальной функции, чтобы у тебя в json была пометка "class: Namespace.MyClass2", либо написанием своего конвертера

SightRo- Автор вопроса
Andrew Shurunov
Я понимаю. Это решается либо включением специально...

Пометка не вариант, но конвертеры могут сработать. Спасибо.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта