20230326-2

This commit is contained in:
Александр Бабаев 2024-03-26 23:39:02 +03:00
parent 061408763d
commit 9171e6d5e3
6 changed files with 50 additions and 86 deletions

View File

@ -1,5 +1,6 @@
// ReSharper disable MemberCanBePrivate.Global
// ReSharper disable UnusedAutoPropertyAccessor.Global
// ReSharper disable MemberCanBeProtected.Global
using anbs_cp.Enums;
using anbs_cp.Interfaces;
@ -10,7 +11,8 @@ namespace anbs_cp.Classes;
История версий
Обновлено 2024.03.26
* Все интерфейсы объеденины в один IActionStateMessage
* Все интерфейсы объеденины в один класс ActionStateMessage
* Интерфейс IActionState удалён
Обновлено 2023.12.10
* Заменены классы Action* на соответствующие интерфейсы
@ -25,7 +27,7 @@ namespace anbs_cp.Classes;
*/
/// <inheritdoc />
public class ActionState<T>: IActionState
public class ActionState<T>: ISerializable
{
/// <summary>
/// Конструктор по умолчанию
@ -54,17 +56,17 @@ public class ActionState<T>: IActionState
/// <summary>
/// Список информации
/// </summary>
public List<IActionStateMessage> Info { get; }
public List<ActionStateMessage> Info { get; }
/// <summary>
/// Список предупреждений
/// </summary>
public List<IActionStateMessage> Warnings { get; }
public List<ActionStateMessage> Warnings { get; }
/// <summary>
/// Список ошибок
/// </summary>
public List<IActionStateMessage> Errors { get; }
public List<ActionStateMessage> Errors { get; }
/// <summary>
/// Значение
@ -119,13 +121,13 @@ public class ActionState<T>: IActionState
/// <param name="error">Ошибка</param>
// ReSharper disable once MemberCanBeMadeStatic.Global
// ReSharper disable once FunctionRecursiveOnAllPaths
public void AddError (IActionStateMessage error) => Errors.Add(error);
public void AddError (ActionStateMessage error) => Errors.Add(error);
/// <summary>
/// Добавляет ошибки в список
/// </summary>
/// <param name="errors">Список ошибок</param>
public void AddErrors (IEnumerable<IActionStateMessage> errors) => Errors.AddRange(errors);
public void AddErrors (IEnumerable<ActionStateMessage> errors) => Errors.AddRange(errors);
/// <summary>
/// Добавление ошибки
@ -175,13 +177,13 @@ public class ActionState<T>: IActionState
/// Добавление предупреждения
/// </summary>
/// <param name="warning">Предупреждение</param>
public void AddWarning (IActionStateMessage warning) => Warnings.Add(warning);
public void AddWarning (ActionStateMessage warning) => Warnings.Add(warning);
/// <summary>
/// Добавление предупреждений
/// </summary>
/// <param name="warnings">Список предупреждений</param>
public void AddWarnings (IEnumerable<IActionStateMessage> warnings) => Warnings.AddRange(warnings);
public void AddWarnings (IEnumerable<ActionStateMessage> warnings) => Warnings.AddRange(warnings);
/// <summary>
/// Добавление предупреждение
@ -203,13 +205,13 @@ public class ActionState<T>: IActionState
/// Добавление информации
/// </summary>
/// <param name="info">Информация</param>
public void AddInfo (IActionStateMessage info) => Info.Add(info);
public void AddInfo (ActionStateMessage info) => Info.Add(info);
/// <summary>
/// Добавление информации
/// </summary>
/// <param name="infos">Список информации</param>
public void AddInfos (IEnumerable<IActionStateMessage> infos) => Info.AddRange(infos);
public void AddInfos (IEnumerable<ActionStateMessage> infos) => Info.AddRange(infos);
/// <summary>
/// Добавление информации
@ -238,7 +240,7 @@ public class ActionState<T>: IActionState
public string PrintMessage (EActionStatePrintArea area, string formatList, string formatItem)
{
// Создаю список
List<IActionStateMessage> list = [];
List<ActionStateMessage> list = [];
// Выбираю списки по областям
switch (area)
@ -340,7 +342,7 @@ public class ActionState<T>: IActionState
/// </summary>
/// <typeparam name="T">Тип параметра</typeparam>
/// <param name="state">Запись состояния</param>
public void AddState (IActionState state)
public void AddState (ActionState<T> state)
{
AddErrors(state.Errors);
AddWarnings(state.Warnings);
@ -357,17 +359,17 @@ public class ActionState<T>: IActionState
ActionStateSerializable serializableModel = new();
// Для каждого информационного сообщения
foreach (IActionStateMessage info in Info)
foreach (ActionStateMessage info in Info)
// - добавляю в модель
serializableModel.Info.Add(info.Serialize());
// Для каждого предупреждения
foreach (IActionStateMessage warning in Warnings)
foreach (ActionStateMessage warning in Warnings)
// - добавляю в модель
serializableModel.Info.Add(warning.Serialize());
// Для каждой ошибки
foreach (IActionStateMessage error in Errors)
foreach (ActionStateMessage error in Errors)
// - добавляю в модель
serializableModel.Info.Add(error.Serialize());

View File

@ -1,18 +1,30 @@
using anbs_cp.Interfaces;
// ReSharper disable MemberCanBeInternal
// ReSharper disable MemberCanBePrivate.Global
using anbs_cp.Interfaces;
namespace anbs_cp.Classes;
/// <inheritdoc />
public sealed class ActionStateMessage: IActionStateMessage
/// <summary>
/// Класс сообщения состояния
/// </summary>
public sealed class ActionStateMessage: ISerializable
{
/// <inheritdoc />
#region Свойства
/// <summary>
/// Критичность сообщения
/// </summary>
public bool IsCritical { get; set; }
/// <inheritdoc />
/// <summary>
/// Объект сообщения
/// </summary>
public object Object { get; set; }
/// <inheritdoc />
/// <summary>
/// Текст сообщения
/// </summary>
public string Message { get; set; }
#endregion
#region Конструкторы
/// <summary>
@ -52,6 +64,15 @@ public sealed class ActionStateMessage: IActionStateMessage
}
#endregion
#region Методы
/// <summary>
/// Вывод сообщения
/// </summary>
/// <param name="format">Строка-форматирование (например, «[{0}] - {1}»)</param>
/// <returns>Отформатированную строка</returns>
public string PrintMessage (string format) => string.Format(format, Object, Message);
#endregion
#region Реализация интерфейса ISerializable
/// <inheritdoc />
public string Serialize () => new SysTextSerializer().Serialize(this);

View File

@ -12,7 +12,7 @@ namespace anbs_cp.Classes;
public sealed class ActionStateSerialized<T>: ActionState<T> where T : ISerializable, new()
{
/// <summary>
/// Добавляет другое состояние (например, результат другого действия, который возвращает <see cref="IActionState"/>).
/// Добавляет другое состояние (например, результат другого действия, который возвращает <see cref="ActionState"/>).
/// </summary>
/// <param name="state">Запись состояния</param>
public void AddState (ActionStateSerialized<T> state)
@ -32,17 +32,17 @@ public sealed class ActionStateSerialized<T>: ActionState<T> where T : ISerializ
ActionStateSerializable serializableModel = new();
// Для каждого информационного сообщения
foreach (IActionStateMessage info in Info)
foreach (ActionStateMessage info in Info)
// - добавляю в модель
serializableModel.Info.Add(info.Serialize());
// Для каждого предупреждения
foreach (IActionStateMessage warning in Warnings)
foreach (ActionStateMessage warning in Warnings)
// - добавляю в модель
serializableModel.Info.Add(warning.Serialize());
// Для каждой ошибки
foreach (IActionStateMessage error in Errors)
foreach (ActionStateMessage error in Errors)
// - добавляю в модель
serializableModel.Info.Add(error.Serialize());

View File

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

View File

@ -1,29 +0,0 @@
namespace anbs_cp.Interfaces;
/// <summary>
/// Интерфейс сообщения состояния
/// </summary>
public interface IActionStateMessage: ISerializable
{
/// <summary>
/// Критичность сообщения
/// </summary>
public bool IsCritical { get; set; }
/// <summary>
/// Объект сообщения
/// </summary>
public object Object { get; set; }
/// <summary>
/// Текст сообщения
/// </summary>
public string Message { get; set; }
/// <summary>
/// Функция вывода сообщения
/// </summary>
/// <param name="format">Строка-форматирование (например, «[{0}] - {1}»)</param>
/// <returns>Отформатированную строка</returns>
public string PrintMessage (string format) => string.Format (format, Object, Message);
}

View File

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