DragAndDrop core
This commit is contained in:
103
Lattice.Serialization.Docking/ILayoutSerializer.cs
Normal file
103
Lattice.Serialization.Docking/ILayoutSerializer.cs
Normal file
@@ -0,0 +1,103 @@
|
||||
using Lattice.Core.Docking.Abstractions;
|
||||
using Lattice.Core.Docking.Engine;
|
||||
|
||||
namespace Lattice.Serialization.Docking;
|
||||
|
||||
/// <summary>
|
||||
/// Определяет контракт для сериализации и десериализации состояния макета док-системы.
|
||||
/// Этот интерфейс позволяет реализовать различные форматы сериализации (JSON, XML, Binary)
|
||||
/// и различные хранилища (файлы, базы данных, облако) без изменения основной логики.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Реализации этого интерфейса должны преобразовывать объектную модель док-системы
|
||||
/// в промежуточный DTO (<see cref="LayoutDto"/>), который затем сериализуется в целевой формат.
|
||||
/// Это обеспечивает независимость формата сериализации от структуры DTO.
|
||||
/// </remarks>
|
||||
public interface ILayoutSerializer
|
||||
{
|
||||
/// <summary>
|
||||
/// Получает уникальный идентификатор формата сериализации.
|
||||
/// </summary>
|
||||
/// <value>Строковый идентификатор формата, например "json", "xml", "binary".</value>
|
||||
string FormatId { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Получает MIME-тип формата сериализации.
|
||||
/// </summary>
|
||||
/// <value>MIME-тип, например "application/json", "application/xml".</value>
|
||||
string MimeType { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Получает расширение файла по умолчанию для данного формата.
|
||||
/// </summary>
|
||||
/// <value>Расширение файла, например ".json", ".xml".</value>
|
||||
string DefaultFileExtension { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Сериализует состояние менеджера макета в массив байтов.
|
||||
/// </summary>
|
||||
/// <param name="manager">Менеджер макета для сериализации.</param>
|
||||
/// <returns>Массив байтов, содержащий сериализованное состояние макета.</returns>
|
||||
/// <exception cref="ArgumentNullException">Выбрасывается, если <paramref name="manager"/> равен null.</exception>
|
||||
byte[] Serialize(LayoutManager manager);
|
||||
|
||||
/// <summary>
|
||||
/// Сериализует состояние менеджера макета в строку.
|
||||
/// </summary>
|
||||
/// <param name="manager">Менеджер макета для сериализации.</param>
|
||||
/// <returns>Строковое представление состояния макета.</returns>
|
||||
/// <exception cref="ArgumentNullException">Выбрасывается, если <paramref name="manager"/> равен null.</exception>
|
||||
string SerializeToString(LayoutManager manager);
|
||||
|
||||
/// <summary>
|
||||
/// Сериализует состояние менеджера макета в поток.
|
||||
/// </summary>
|
||||
/// <param name="manager">Менеджер макета для сериализации.</param>
|
||||
/// <param name="stream">Поток для записи сериализованных данных.</param>
|
||||
/// <exception cref="ArgumentNullException">
|
||||
/// Выбрасывается, если <paramref name="manager"/> или <paramref name="stream"/> равен null.
|
||||
/// </exception>
|
||||
void SerializeToStream(LayoutManager manager, Stream stream);
|
||||
|
||||
/// <summary>
|
||||
/// Десериализует состояние макета из массива байтов и восстанавливает его в менеджере.
|
||||
/// </summary>
|
||||
/// <param name="manager">Менеджер макета для восстановления состояния.</param>
|
||||
/// <param name="data">Массив байтов с сериализованным состоянием макета.</param>
|
||||
/// <param name="contentResolver">
|
||||
/// Функция разрешения контента по идентификатору, используемая для восстановления
|
||||
/// ссылок на контент в десериализованном состоянии.
|
||||
/// </param>
|
||||
/// <exception cref="ArgumentNullException">
|
||||
/// Выбрасывается, если <paramref name="manager"/> или <paramref name="data"/> равен null.
|
||||
/// </exception>
|
||||
void Deserialize(LayoutManager manager, byte[] data, Func<string, IDockContent?> contentResolver);
|
||||
|
||||
/// <summary>
|
||||
/// Десериализует состояние макета из строки и восстанавливает его в менеджере.
|
||||
/// </summary>
|
||||
/// <param name="manager">Менеджер макета для восстановления состояния.</param>
|
||||
/// <param name="serializedData">Строка с сериализованным состоянием макета.</param>
|
||||
/// <param name="contentResolver">
|
||||
/// Функция разрешения контента по идентификатору, используемая для восстановления
|
||||
/// ссылок на контент в десериализованном состоянии.
|
||||
/// </param>
|
||||
/// <exception cref="ArgumentNullException">
|
||||
/// Выбрасывается, если <paramref name="manager"/> или <paramref name="serializedData"/> равен null.
|
||||
/// </exception>
|
||||
void DeserializeFromString(LayoutManager manager, string serializedData, Func<string, IDockContent?> contentResolver);
|
||||
|
||||
/// <summary>
|
||||
/// Десериализует состояние макета из потока и восстанавливает его в менеджере.
|
||||
/// </summary>
|
||||
/// <param name="manager">Менеджер макета для восстановления состояния.</param>
|
||||
/// <param name="stream">Поток с сериализованными данными.</param>
|
||||
/// <param name="contentResolver">
|
||||
/// Функция разрешения контента по идентификатору, используемая для восстановления
|
||||
/// ссылок на контент в десериализованном состоянии.
|
||||
/// </param>
|
||||
/// <exception cref="ArgumentNullException">
|
||||
/// Выбрасывается, если <paramref name="manager"/> или <paramref name="stream"/> равен null.
|
||||
/// </exception>
|
||||
void DeserializeFromStream(LayoutManager manager, Stream stream, Func<string, IDockContent?> contentResolver);
|
||||
}
|
||||
Reference in New Issue
Block a user