26. Avalonia UI Real World (Restore Data with Reflection)

00:00 Введение в проблему • Добавление новых действий «Печать» и «Отмена». • Необходимость восстановления изменений при отмене действий. 00:21 Введение в рефлексию • Объяснение концепции рефлексии на примере зеркала. • Рефлексия в коде позволяет работать с реальными свойствами объектов. • Пример использования рефлексии в сериализаторе JSON. 01:03 Создание функции для восстановления состояния • Создание функции «искажать сохранённое состояние». • Проблема с созданием нового класса для восстановления состояния. 02:17 Проблемы с ручным восстановлением свойств • Трудности с добавлением новых свойств в класс. • Необходимость перепечатывания кода для разных моделей представления. 03:07 Решение с помощью рефлексии • Использование рефлексии для десериализации состояния сохранения. • Создание универсального класса для десериализации любых типов. 04:10 Цикл свойств и получение информации о свойствах • Цикл по свойствам класса с помощью информации о свойстве. • Получение типа класса и его свойств. 05:44 Получение значений свойств • Извлечение значений свойств через информацию о свойстве. • Проверка полученных значений в коде. 06:46 Установка значений из состояния сохранения • Установка значений свойств из состояния сохранения. • Проверка корректности установки значений. 08:26 Решение проблемы с недоступными для записи свойствами • Проблема с установкой значений для свойств-получателей. • Обновление логики для работы с недоступными для записи свойствами. 09:41 Игнорирование свойств в десериализаторе • Использование свойства «json игнорировать» для игнорирования определённых свойств при десериализации. • Пример игнорирования свойств в собственном классе. 10:20 Игнорирование свойств с флагом JSON Ignore • Использование PropertyInfo для получения пользовательских атрибутов. • Введение атрибута игнорирования в формате JSON. • Определение длины первого варианта для проверки наличия свойства. 10:53 Применение отрицательной логики • Если значение больше нуля, продолжаем обработку. • Игнорирование свойств с атрибутом JSON Ignore. • Восстановление выбора остаётся неизменным. 11:25 Проблема с выбором печати • При нажатии «Отмена» теряется выбор печати. • Отсутствие профиля принтера в классе после восстановления. 11:49 Решение проблемы с viewmodel • Viewmodel хранит другую модель представления. • Восстановление из JSON создаёт новую viewmodel. • Решение: хранить только идентификатор viewmodel. 12:53 Изменение привязки выбранного элемента • Изменение привязки с профиля принтера на идентификатор профиля принтера. • Использование выбранного значения вместо экземпляра класса. 14:09 Привязка к идентификатору • Привязка к новому свойству id. • Создание выбранного значения и идентификатора профиля. 15:05 Тестирование привязки • Установка значений по умолчанию для идентификаторов. • Проверка работы привязки при отмене. 16:26 Исправление текстового поля • Возвращение текстового поля в значение true для ввода новых строк. • Замена выбранного элемента списка печати на идентификатор. 18:25 Обновление пользовательского интерфейса • Изменение привязки выбранного элемента списка печати. • Удаление привязки к viewmodel. 20:16 Финальные тесты • Проверка работы выбора после изменений. • Обнаружение ошибки в привязках. • Исправление привязок в бэкэнде. 21:46 Обновление пользовательского интерфейса • Привязка к идентификатору и выбранному идентификатору списка печати. • Необходимость обновления элемента списка печати. • Упоминание о забытом свойстве notify для имени выбранного элемента списка печати. 22:19 Проблема с первым пунктом • Первый пункт списка печати отсутствует. • По умолчанию первый пункт не выбран. • Остальные функции работают корректно. 22:33 Анализ проблемы с первым элементом • Первый элемент в списке начинается со случайного значения. • Проблема связана с порядком элементов в списке выборки. 22:58 Решение проблемы с порядком элементов • Попытка обновить список напечатанных или выбранных элементов печати. • Проблема с выбором первого элемента из-за отсутствия профиля принтера. • Решение: переместить список профилей принтеров выше списка принтеров. 23:43 Проверка решения • После перемещения списка профилей принтеров проблема решена. • Пользовательский интерфейс отслеживает порядок приоритета. • Добавлена функция отмены для возврата изменений.

Иконка канала Ленинский Букварь
239 подписчиков
12+
9 просмотров
10 дней назад
12+
9 просмотров
10 дней назад

00:00 Введение в проблему • Добавление новых действий «Печать» и «Отмена». • Необходимость восстановления изменений при отмене действий. 00:21 Введение в рефлексию • Объяснение концепции рефлексии на примере зеркала. • Рефлексия в коде позволяет работать с реальными свойствами объектов. • Пример использования рефлексии в сериализаторе JSON. 01:03 Создание функции для восстановления состояния • Создание функции «искажать сохранённое состояние». • Проблема с созданием нового класса для восстановления состояния. 02:17 Проблемы с ручным восстановлением свойств • Трудности с добавлением новых свойств в класс. • Необходимость перепечатывания кода для разных моделей представления. 03:07 Решение с помощью рефлексии • Использование рефлексии для десериализации состояния сохранения. • Создание универсального класса для десериализации любых типов. 04:10 Цикл свойств и получение информации о свойствах • Цикл по свойствам класса с помощью информации о свойстве. • Получение типа класса и его свойств. 05:44 Получение значений свойств • Извлечение значений свойств через информацию о свойстве. • Проверка полученных значений в коде. 06:46 Установка значений из состояния сохранения • Установка значений свойств из состояния сохранения. • Проверка корректности установки значений. 08:26 Решение проблемы с недоступными для записи свойствами • Проблема с установкой значений для свойств-получателей. • Обновление логики для работы с недоступными для записи свойствами. 09:41 Игнорирование свойств в десериализаторе • Использование свойства «json игнорировать» для игнорирования определённых свойств при десериализации. • Пример игнорирования свойств в собственном классе. 10:20 Игнорирование свойств с флагом JSON Ignore • Использование PropertyInfo для получения пользовательских атрибутов. • Введение атрибута игнорирования в формате JSON. • Определение длины первого варианта для проверки наличия свойства. 10:53 Применение отрицательной логики • Если значение больше нуля, продолжаем обработку. • Игнорирование свойств с атрибутом JSON Ignore. • Восстановление выбора остаётся неизменным. 11:25 Проблема с выбором печати • При нажатии «Отмена» теряется выбор печати. • Отсутствие профиля принтера в классе после восстановления. 11:49 Решение проблемы с viewmodel • Viewmodel хранит другую модель представления. • Восстановление из JSON создаёт новую viewmodel. • Решение: хранить только идентификатор viewmodel. 12:53 Изменение привязки выбранного элемента • Изменение привязки с профиля принтера на идентификатор профиля принтера. • Использование выбранного значения вместо экземпляра класса. 14:09 Привязка к идентификатору • Привязка к новому свойству id. • Создание выбранного значения и идентификатора профиля. 15:05 Тестирование привязки • Установка значений по умолчанию для идентификаторов. • Проверка работы привязки при отмене. 16:26 Исправление текстового поля • Возвращение текстового поля в значение true для ввода новых строк. • Замена выбранного элемента списка печати на идентификатор. 18:25 Обновление пользовательского интерфейса • Изменение привязки выбранного элемента списка печати. • Удаление привязки к viewmodel. 20:16 Финальные тесты • Проверка работы выбора после изменений. • Обнаружение ошибки в привязках. • Исправление привязок в бэкэнде. 21:46 Обновление пользовательского интерфейса • Привязка к идентификатору и выбранному идентификатору списка печати. • Необходимость обновления элемента списка печати. • Упоминание о забытом свойстве notify для имени выбранного элемента списка печати. 22:19 Проблема с первым пунктом • Первый пункт списка печати отсутствует. • По умолчанию первый пункт не выбран. • Остальные функции работают корректно. 22:33 Анализ проблемы с первым элементом • Первый элемент в списке начинается со случайного значения. • Проблема связана с порядком элементов в списке выборки. 22:58 Решение проблемы с порядком элементов • Попытка обновить список напечатанных или выбранных элементов печати. • Проблема с выбором первого элемента из-за отсутствия профиля принтера. • Решение: переместить список профилей принтеров выше списка принтеров. 23:43 Проверка решения • После перемещения списка профилей принтеров проблема решена. • Пользовательский интерфейс отслеживает порядок приоритета. • Добавлена функция отмены для возврата изменений.

, чтобы оставлять комментарии