Страницы

Поиск по вопросам

среда, 3 апреля 2019 г.

Почему при сериализации получается рекурсия?

Почему когда я хочу сериализовать в JSON какой нибудь контрол, то вылазит рекурсия?
JavaScriptSerializer serializer = new JavaScriptSerializer(); string json = serializer.Serialize(label1);


Ответ

Потому что у контрола есть ссылка на родительский контрол, а у того список ссылок на детей - круг замкнулся.
Можно написать свою обертку, у которой только те свойства, которые Вы хотите сохранить.
public class ControlWrapper { private Control fControl;
public ControlWrapper(Control aControl) { fControl = aControl; }
public int Width { get { return fControl.Width; } }
... }
JavaScriptSerializer serializer = new JavaScriptSerializer(); string json = serializer.Serialize(new ControlWrapper(label1));

Комментариев нет:

Отправить комментарий