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

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

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

8 ответов

11 просмотров

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
Я понимаю. Это решается либо включением специально...

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

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Карта сайта