Документация проекта отображения.

This commit is contained in:
2025-05-10 18:05:09 +04:00
parent 54ef2cf331
commit 1a977ee988
8 changed files with 767 additions and 38 deletions
+31 -2
View File
@@ -7,11 +7,27 @@ using Pf2eModel.Model.Structure;
namespace Pf2eViewer;
/// <summary>
/// Класс, обрабатывающий запросы к сущностям и подключающий необходимые данные.
/// </summary>
public class EntityView
{
public Entity? Entity;
public IEntity? SubEntity;
/// <summary>
/// Корневая сущность.
/// </summary>
public Entity? Entity { get; }
/// <summary>
/// Основная сущность.
/// </summary>
public IEntity? SubEntity { get; }
/// <summary>
/// Конструктор класса, который получает сущность из базы данных и заполняет её данными.
/// </summary>
/// <param name="context">Контекст базы данных.</param>
/// <param name="type">Тип запрашиваемой сущности.</param>
/// <param name="id">Идентификатор запрашиваемой сущности.</param>
public EntityView(Pf2eDbContext context, EntityType type, int id)
{
Getter? getter = _getters.FirstOrDefault(g => g.Type == type);
@@ -37,6 +53,9 @@ public class EntityView
SubEntity = subEntity;
}
/// <summary>
/// Словарь, содержащий методы получения сущностей из базы данных.
/// </summary>
private readonly ICollection<Getter> _getters =
[
new Getter<Ancestry>(
@@ -90,6 +109,10 @@ public class EntityView
),
];
/// <summary>
/// Абстрактный класс, который определяет метод получения сущности из базы данных.
/// </summary>
/// <param name="type">Связанный тип сущности.</param>
private abstract class Getter(EntityType type)
{
public readonly EntityType Type = type;
@@ -97,6 +120,12 @@ public class EntityView
public abstract IEntity? Get(int id, Pf2eDbContext context);
}
/// <summary>
/// Класс, определяющий метод получения сущности из базы данных.
/// </summary>
/// <typeparam name="T">Тип данных основной сущности.</typeparam>
/// <param name="type">Связанный тип сущности.</param>
/// <param name="method">Метод получения сущности из базы данных.</param>
private class Getter<T>(EntityType type, Func<Pf2eDbContext, IQueryable<T>> method)
: Getter(type)
where T : IEntity