|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.09.2019, 10:20 | #1 |
Пользователь
Регистрация: 20.12.2008
Сообщений: 22
|
Cериализация объекта с свойством {get;}
Уважаемые специалисты,
Вопрос такой: не получается сереализовать свойство {get;} - то есть без сеттера. То есть объект сериализуеться, но если дернуть в браузере соответственный контроллер и метод Get, то браузер загрузит объект только со свойствами {get;set;}. Есть ли решение такой проблемы, - думаю оно касается больше сериализиции/десериализации чем Web APi. Самый простой способ, сделать все с сеттером, но тогда я нарушу свои сущности, и они будут из себя представлять не то, что должны на самом деле. Еще где то вычитал способ, что для сериализации можно сделать отдельные классы и снабдить их такими же свойствами только с сеттерами, - потом в основной программе, - где нить в конструкторе через рефлексию соорудить связь между свойствами основного объекта, и того, который будет серилизоваться, - но способ ужасный хотя бы тем, что нужно задваивать по сути одинаковый код. Код:
Последний раз редактировалось Sasha811; 17.09.2019 в 10:32. |
17.09.2019, 10:49 | #2 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
если не надо десерелизовывать, то вроде можно пустой сеттер добавить.
Ну и разные другие извращения типа https://stackoverflow.com/a/26160509/964478 (internal поле + [assembly: InternalsVisibleTo("System.Runtime. Serialization")]) Цитата:
Никто ж не заставляет использовать сеттер для чего-то еще.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
17.09.2019, 19:36 | #3 |
Пользователь
Регистрация: 20.12.2008
Сообщений: 22
|
Спасибо, пустой сетер, - реально компромисс..В коде за периметром класса в него позволительно присваивать, но присвоения безсмыслены, так как "затираются" геттером
|
17.12.2019, 08:04 | #4 |
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 823
|
Вообще-то так делать в корне не верно. Делать нормальным образом транспортные ссобщения и контракты - это одни классы. Их надо хранить в отдельной сборке и эта сборка не должна ни от кого зависеть. Внутренние классы - это другие классы. Не надо их смешивать. Что если нужно будет добавить методы, переименовать свойства, разделить класс не два и прочее? Менять контракт сервиса? А как их потом обновлять сервисы, которые потребляют этот контракт? Лучше выделить сборку с конрактами и сборку с внутренними классами. Для того, чтобы не писать код копирующий свойства между ними есть библиотеки, такие как: Automapper, TinyMapper и другие.
Не давай организму поблажки, каждый день тренируй его в шашки..
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[Java] Создание объекта внутри объекта этогоже класса. | Svarogich | Помощь студентам | 2 | 01.08.2011 16:03 |
CLR. Ошибка C3918. Как вызвать из объекта обработчик, переданный родителю объекта от деда? | Stilet | Общие вопросы .NET | 0 | 15.01.2011 17:49 |
Компонент со свойством TStrings. | Impuls1989 | Компоненты Delphi | 15 | 17.09.2009 17:42 |
С помощью методов и свойств объекта осуществляется управление терминалом. Имя (идентификатор) объекта | User>lia | Общие вопросы Delphi | 4 | 16.01.2009 16:37 |
Как поменять одну из текстур объекта не меняя все остальные и без повторной загрузки объекта в GLScene | DomKr@t | Мультимедиа в Delphi | 0 | 14.12.2008 01:52 |