40 lines
2.4 KiB
C#
40 lines
2.4 KiB
C#
namespace Lattice.Core.Docking.Serialization;
|
||
|
||
/// <summary>
|
||
/// Определяет контракт для сериализации и десериализации состояния макета док-системы.
|
||
/// Позволяет сохранять и восстанавливать расположение панелей, окон и их состояние.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// Эта абстракция позволяет реализовать различные форматы сериализации (JSON, XML, бинарный)
|
||
/// и различные хранилища (файлы, базы данных, облако) без изменения основной логики док-системы.
|
||
/// </remarks>
|
||
public interface ILayoutSerializer
|
||
{
|
||
/// <summary>
|
||
/// Сериализует состояние менеджера макета в строку.
|
||
/// </summary>
|
||
/// <param name="manager">Менеджер макета для сериализации.</param>
|
||
/// <returns>
|
||
/// Строковое представление состояния макета.
|
||
/// </returns>
|
||
/// <exception cref="ArgumentNullException">
|
||
/// Выбрасывается, когда <paramref name="manager"/> равен null.
|
||
/// </exception>
|
||
string Serialize(Engine.LayoutManager manager);
|
||
|
||
/// <summary>
|
||
/// Десериализует состояние макета из строки и восстанавливает его в менеджере.
|
||
/// </summary>
|
||
/// <param name="manager">Менеджер макета для восстановления состояния.</param>
|
||
/// <param name="serializedLayout">Сериализованное состояние макета.</param>
|
||
/// <param name="contentResolver">
|
||
/// Функция разрешения контента по идентификатору, используемая для восстановления
|
||
/// ссылок на контент в десериализованном состоянии.
|
||
/// </param>
|
||
/// <exception cref="ArgumentNullException">
|
||
/// Выбрасывается, когда <paramref name="manager"/> или <paramref name="serializedLayout"/>
|
||
/// равны null.
|
||
/// </exception>
|
||
void Deserialize(Engine.LayoutManager manager, string serializedLayout,
|
||
Func<string, Abstractions.IDockContent?> contentResolver);
|
||
} |