using Lattice.Core.Docking.Abstractions; using Lattice.Core.Docking.Engine; namespace Lattice.Serialization.Docking; /// /// Определяет контракт для сериализации и десериализации состояния макета док-системы. /// Этот интерфейс позволяет реализовать различные форматы сериализации (JSON, XML, Binary) /// и различные хранилища (файлы, базы данных, облако) без изменения основной логики. /// /// /// Реализации этого интерфейса должны преобразовывать объектную модель док-системы /// в промежуточный DTO (), который затем сериализуется в целевой формат. /// Это обеспечивает независимость формата сериализации от структуры DTO. /// public interface ILayoutSerializer { /// /// Получает уникальный идентификатор формата сериализации. /// /// Строковый идентификатор формата, например "json", "xml", "binary". string FormatId { get; } /// /// Получает MIME-тип формата сериализации. /// /// MIME-тип, например "application/json", "application/xml". string MimeType { get; } /// /// Получает расширение файла по умолчанию для данного формата. /// /// Расширение файла, например ".json", ".xml". string DefaultFileExtension { get; } /// /// Сериализует состояние менеджера макета в массив байтов. /// /// Менеджер макета для сериализации. /// Массив байтов, содержащий сериализованное состояние макета. /// Выбрасывается, если равен null. byte[] Serialize(LayoutManager manager); /// /// Сериализует состояние менеджера макета в строку. /// /// Менеджер макета для сериализации. /// Строковое представление состояния макета. /// Выбрасывается, если равен null. string SerializeToString(LayoutManager manager); /// /// Сериализует состояние менеджера макета в поток. /// /// Менеджер макета для сериализации. /// Поток для записи сериализованных данных. /// /// Выбрасывается, если или равен null. /// void SerializeToStream(LayoutManager manager, Stream stream); /// /// Десериализует состояние макета из массива байтов и восстанавливает его в менеджере. /// /// Менеджер макета для восстановления состояния. /// Массив байтов с сериализованным состоянием макета. /// /// Функция разрешения контента по идентификатору, используемая для восстановления /// ссылок на контент в десериализованном состоянии. /// /// /// Выбрасывается, если или равен null. /// void Deserialize(LayoutManager manager, byte[] data, Func contentResolver); /// /// Десериализует состояние макета из строки и восстанавливает его в менеджере. /// /// Менеджер макета для восстановления состояния. /// Строка с сериализованным состоянием макета. /// /// Функция разрешения контента по идентификатору, используемая для восстановления /// ссылок на контент в десериализованном состоянии. /// /// /// Выбрасывается, если или равен null. /// void DeserializeFromString(LayoutManager manager, string serializedData, Func contentResolver); /// /// Десериализует состояние макета из потока и восстанавливает его в менеджере. /// /// Менеджер макета для восстановления состояния. /// Поток с сериализованными данными. /// /// Функция разрешения контента по идентификатору, используемая для восстановления /// ссылок на контент в десериализованном состоянии. /// /// /// Выбрасывается, если или равен null. /// void DeserializeFromStream(LayoutManager manager, Stream stream, Func contentResolver); }