Этот вопрос вытекает из предыдущего моего
вопроса. Возможно я где-то слабо уловил суть и прот@пил, по этому не ругайте :D
Ситуация:
Есть сложный объект с многими закрытыми полями который, в придачу, является stateful. Стоит понимать, что этот объект включает в себя большую иерархию зависимых объектов который связаны отношением
has
. Тут по очереди.
Поля используются для приватных массивов различных типов, в классе есть индексаторы и методы работы с этими массивами, т.е., действия напрямую осуществить нельзя. Эти приватные полям сохраняют некое
микросостояние объекта
Свойства имеют
public get
и
private set/init
В объекте (И его связанных объектах) нет публичного
Конструктора. Все объекты
собираются через реализацию паттерна
Builder
, который строит большой, сложный объект согласное некой стратегии (Реализация паттерна
Strategy
), выбранной перед созданием объекта
Проблема
Сейчас нужно сделать обмен этими объектами между несколькими клиентами. Работает всё по стандартному
http
(asp.net core web api). Исходя из предыдущего вопроса, я понял, что стандартными сериализаторами это сделать не получится, т.к. для них нужен открытый конструктор без параметров (Хотя бы), что не подходит по бизнес требования задачи. Тут остаётся вопрос в том, как передать такой
security object
?
P.s.:
Скорее всего, кто-то точно скажет:
-
если объект можно передать, значит ты должен "засветить" все его "внутренности", значит не стоит бояться сделать публичный конструктор для десериализации
Вопрос тут больше не в том, что бы "светить" приватными полями, а в сохранении логики построения объектов (Точнее целой иерархии). Можно воспользоваться рефлексией (Как уже было сказано в предыдущем вопросе), но это не лучший способ писать такой сериализатор в ручную. По крайней мере, я пока пытаюсь найти другие способы