Files
Lattice/Lattice.Serialization.Docking/DTO/LayoutDto.cs
2026-01-18 16:33:35 +03:00

48 lines
1.9 KiB
C#

namespace Lattice.Serialization.Docking;
/// <summary>
/// Data Transfer Object (DTO) для сериализации состояния макета док-системы.
/// Содержит все необходимые данные для сохранения и восстановления состояния макета.
/// </summary>
/// <remarks>
/// Этот DTO является независимым от формата сериализации (JSON, XML, Binary) и используется
/// как промежуточное представление между объектной моделью и сериализованными данными.
/// </remarks>
public class LayoutDto
{
/// <summary>
/// Версия формата DTO для контроля совместимости.
/// </summary>
public string Version { get; set; } = "1.0";
/// <summary>
/// Дата и время создания DTO в UTC.
/// </summary>
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
/// <summary>
/// Идентификатор приложения, создавшего DTO.
/// </summary>
public string? ApplicationId { get; set; }
/// <summary>
/// Корневой элемент дерева компоновки.
/// </summary>
public ElementDto? Root { get; set; }
/// <summary>
/// Список плавающих окон.
/// </summary>
public List<WindowDto> FloatingWindows { get; set; } = new();
/// <summary>
/// Список автоскрываемых панелей.
/// </summary>
public List<AutoHidePanelDto> AutoHidePanels { get; set; } = new();
/// <summary>
/// Дополнительные метаданные, специфичные для приложения.
/// </summary>
public Dictionary<string, string> Metadata { get; set; } = new();
}