This commit is contained in:
Александр Бабаев 2023-12-10 20:33:06 +03:00
parent 73e6e4d3b1
commit ec16d085fa
3 changed files with 68 additions and 26 deletions

View File

@ -2,25 +2,36 @@
namespace anbs_cp.Classes;
/*
История версий
Обновлено 2023.12.10
* Заменены классы Action* на соответствующие интерфейсы
* Класс ActionState теперь наследует интерфейс IActionState, позволяющий добавлять состояния (ошибки, предупреждения и информацию)
из разных классов ActionState, т.е. например, данные из ActionState<bool> (кроме значения!) можно перенести в ActionState<int>.
Обновлено 2023.11.1
* Добавлен возвращаемый результат
Обновлено 2023.01.121.1:
* Заменены интерфейсы IAction* на соответствующие классы
*/
/// <summary>
/// Состояние действия
///
/// Обновлено 2023.11.1
/// * Добавлен возвращаемый результат
///
/// Обновлено 2023.01.121.1:
/// * Заменены интерфейсы IAction* на соответствующие классы
/// Класс, хранящий в себе состояния действия
/// </summary>
public class ActionState<T>
/// <typeparam name="T">Тип значения - результата действия</typeparam>
public class ActionState<T>: IActionState
{
/// <summary>
/// Конструктор по умолчанию
/// </summary>
// ReSharper disable once MemberCanBeProtected.Global
public ActionState ()
{
Info = new();
Warnings = new();
Errors = new();
Info = [];
Warnings = [];
Errors = [];
Value = default;
}
@ -30,26 +41,26 @@ public class ActionState<T>
/// <param name="defaultValue">Начальное значение <see cref="Value"/></param>
public ActionState (T defaultValue)
{
Info = new();
Warnings = new();
Errors = new();
Info = [];
Warnings = [];
Errors = [];
Value = defaultValue;
}
/// <summary>
/// Список информации
/// </summary>
public List<ActionInfo> Info { get; }
public List<IActionInfo> Info { get; }
/// <summary>
/// Список предупреждений
/// </summary>
public List<ActionWarning> Warnings { get; }
public List<IActionWarning> Warnings { get; }
/// <summary>
/// Список ошибок
/// </summary>
public List<ActionError> Errors { get; }
public List<IActionError> Errors { get; }
/// <summary>
/// Значение
@ -104,13 +115,13 @@ public class ActionState<T>
/// <param name="error">Ошибка</param>
// ReSharper disable once MemberCanBeMadeStatic.Global
// ReSharper disable once FunctionRecursiveOnAllPaths
public void AddError (ActionError error) => Errors.Add(error);
public void AddError (IActionError error) => Errors.Add(error);
/// <summary>
/// Добавляет ошибки в список
/// </summary>
/// <param name="errors">Список ошибок</param>
public void AddErrors(IEnumerable<ActionError> errors) => Errors.AddRange(errors);
public void AddErrors (IEnumerable<IActionError> errors) => Errors.AddRange(errors);
/// <summary>
/// Добавление ошибки
@ -160,13 +171,13 @@ public class ActionState<T>
/// Добавление предупреждения
/// </summary>
/// <param name="warning">Предупреждение</param>
public void AddWarning (ActionWarning warning) => Warnings.Add(warning);
public void AddWarning (IActionWarning warning) => Warnings.Add(warning);
/// <summary>
/// Добавление предупреждений
/// </summary>
/// <param name="warnings">Список предупреждений</param>
public void AddWarnings(IEnumerable<ActionWarning> warnings) => Warnings.AddRange(warnings);
public void AddWarnings (IEnumerable<IActionWarning> warnings) => Warnings.AddRange(warnings);
/// <summary>
/// Добавление предупреждение
@ -188,13 +199,13 @@ public class ActionState<T>
/// Добавление информации
/// </summary>
/// <param name="info">Информация</param>
public void AddInfo (ActionInfo info) => Info.Add(info);
public void AddInfo (IActionInfo info) => Info.Add(info);
/// <summary>
/// Добавление информации
/// </summary>
/// <param name="infos">Список информации</param>
public void AddInfos (IEnumerable<ActionInfo> infos) => Info.AddRange(infos);
public void AddInfos (IEnumerable<IActionInfo> infos) => Info.AddRange(infos);
/// <summary>
/// Добавление информации
@ -323,11 +334,11 @@ public class ActionState<T>
#region Добавление другого состояния
/// <summary>
/// Добавляет другое состояние (например, результат другого действия, который возвращает &lt;see cref="ActionState"/&gt;).
/// Добавляет другое состояние (например, результат другого действия, который возвращает <see cref="ActionState"/>).
/// </summary>
/// <typeparam name="T">Тип параметра</typeparam>
/// <param name="state">Запись состояния</param>
public void AddState (ActionState<T> state)
public void AddState (IActionState state)
{
AddErrors(state.Errors);
AddWarnings(state.Warnings);

View File

@ -0,0 +1,31 @@
using anbs_cp.Classes;
namespace anbs_cp.Interfaces;
/// <summary>
/// Интерфейс класса, хранящего в себе состояния действия
/// </summary>
public interface IActionState
{
/// <summary>
/// Список информации
/// </summary>
List<IActionInfo> Info { get; }
/// <summary>
/// Список предупреждений
/// </summary>
List<IActionWarning> Warnings { get; }
/// <summary>
/// Список ошибок
/// </summary>
List<IActionError> Errors { get; }
/// <summary>
/// Добавляет другое состояние (например, результат другого действия, который возвращает <see cref="ActionState{T}"/>).
/// </summary>
/// <typeparam name="T">Тип параметра</typeparam>
/// <param name="state">Запись состояния</param>
void AddState (IActionState state);
}

View File

@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Version>2023.1125.0</Version>
<Version>2023.1210.0</Version>
<Authors>Александр Бабаев</Authors>
<Product>Набор компонентов ANB Software</Product>
<Description>Библиотека полезных методов языка C#</Description>