From 9171e6d5e3aefe032d8f919798fb0c2825d817c3 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 26 Mar 2024 23:39:02 +0300 Subject: [PATCH] 20230326-2 --- anbs_cp/Classes/ActionState.cs | 34 ++++++++++++----------- anbs_cp/Classes/ActionStateMessage.cs | 33 ++++++++++++++++++---- anbs_cp/Classes/ActionStateSerialized.cs | 8 +++--- anbs_cp/Interfaces/IActionState.cs | 30 -------------------- anbs_cp/Interfaces/IActionStateMessage.cs | 29 ------------------- anbs_cp/anbs_cp.csproj | 2 +- 6 files changed, 50 insertions(+), 86 deletions(-) delete mode 100644 anbs_cp/Interfaces/IActionState.cs delete mode 100644 anbs_cp/Interfaces/IActionStateMessage.cs diff --git a/anbs_cp/Classes/ActionState.cs b/anbs_cp/Classes/ActionState.cs index ab433d0..053025b 100644 --- a/anbs_cp/Classes/ActionState.cs +++ b/anbs_cp/Classes/ActionState.cs @@ -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; */ /// -public class ActionState: IActionState +public class ActionState: ISerializable { /// /// Конструктор по умолчанию @@ -54,17 +56,17 @@ public class ActionState: IActionState /// /// Список информации /// - public List Info { get; } + public List Info { get; } /// /// Список предупреждений /// - public List Warnings { get; } + public List Warnings { get; } /// /// Список ошибок /// - public List Errors { get; } + public List Errors { get; } /// /// Значение @@ -119,13 +121,13 @@ public class ActionState: IActionState /// Ошибка // 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); /// /// Добавляет ошибки в список /// /// Список ошибок - public void AddErrors (IEnumerable errors) => Errors.AddRange(errors); + public void AddErrors (IEnumerable errors) => Errors.AddRange(errors); /// /// Добавление ошибки @@ -175,13 +177,13 @@ public class ActionState: IActionState /// Добавление предупреждения /// /// Предупреждение - public void AddWarning (IActionStateMessage warning) => Warnings.Add(warning); + public void AddWarning (ActionStateMessage warning) => Warnings.Add(warning); /// /// Добавление предупреждений /// /// Список предупреждений - public void AddWarnings (IEnumerable warnings) => Warnings.AddRange(warnings); + public void AddWarnings (IEnumerable warnings) => Warnings.AddRange(warnings); /// /// Добавление предупреждение @@ -203,13 +205,13 @@ public class ActionState: IActionState /// Добавление информации /// /// Информация - public void AddInfo (IActionStateMessage info) => Info.Add(info); + public void AddInfo (ActionStateMessage info) => Info.Add(info); /// /// Добавление информации /// /// Список информации - public void AddInfos (IEnumerable infos) => Info.AddRange(infos); + public void AddInfos (IEnumerable infos) => Info.AddRange(infos); /// /// Добавление информации @@ -238,7 +240,7 @@ public class ActionState: IActionState public string PrintMessage (EActionStatePrintArea area, string formatList, string formatItem) { // Создаю список - List list = []; + List list = []; // Выбираю списки по областям switch (area) @@ -340,7 +342,7 @@ public class ActionState: IActionState /// /// Тип параметра /// Запись состояния - public void AddState (IActionState state) + public void AddState (ActionState state) { AddErrors(state.Errors); AddWarnings(state.Warnings); @@ -357,17 +359,17 @@ public class ActionState: 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()); diff --git a/anbs_cp/Classes/ActionStateMessage.cs b/anbs_cp/Classes/ActionStateMessage.cs index 220aefd..f076b84 100644 --- a/anbs_cp/Classes/ActionStateMessage.cs +++ b/anbs_cp/Classes/ActionStateMessage.cs @@ -1,18 +1,30 @@ -using anbs_cp.Interfaces; +// ReSharper disable MemberCanBeInternal +// ReSharper disable MemberCanBePrivate.Global +using anbs_cp.Interfaces; namespace anbs_cp.Classes; -/// -public sealed class ActionStateMessage: IActionStateMessage +/// +/// Класс сообщения состояния +/// +public sealed class ActionStateMessage: ISerializable { - /// + #region Свойства + /// + /// Критичность сообщения + /// public bool IsCritical { get; set; } - /// + /// + /// Объект сообщения + /// public object Object { get; set; } - /// + /// + /// Текст сообщения + /// public string Message { get; set; } + #endregion #region Конструкторы /// @@ -52,6 +64,15 @@ public sealed class ActionStateMessage: IActionStateMessage } #endregion + #region Методы + /// + /// Вывод сообщения + /// + /// Строка-форматирование (например, «[{0}] - {1}») + /// Отформатированную строка + public string PrintMessage (string format) => string.Format(format, Object, Message); + #endregion + #region Реализация интерфейса ISerializable /// public string Serialize () => new SysTextSerializer().Serialize(this); diff --git a/anbs_cp/Classes/ActionStateSerialized.cs b/anbs_cp/Classes/ActionStateSerialized.cs index 6dafb7c..401fa85 100644 --- a/anbs_cp/Classes/ActionStateSerialized.cs +++ b/anbs_cp/Classes/ActionStateSerialized.cs @@ -12,7 +12,7 @@ namespace anbs_cp.Classes; public sealed class ActionStateSerialized: ActionState where T : ISerializable, new() { /// - /// Добавляет другое состояние (например, результат другого действия, который возвращает ). + /// Добавляет другое состояние (например, результат другого действия, который возвращает ). /// /// Запись состояния public void AddState (ActionStateSerialized state) @@ -32,17 +32,17 @@ public sealed class ActionStateSerialized: ActionState 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()); diff --git a/anbs_cp/Interfaces/IActionState.cs b/anbs_cp/Interfaces/IActionState.cs deleted file mode 100644 index 2f77a36..0000000 --- a/anbs_cp/Interfaces/IActionState.cs +++ /dev/null @@ -1,30 +0,0 @@ -using anbs_cp.Classes; - -namespace anbs_cp.Interfaces; - -/// -/// Класс, хранящий в себе состояния действия -/// -public interface IActionState: ISerializable -{ - /// - /// Список информации - /// - List Info { get; } - - /// - /// Список предупреждений - /// - List Warnings { get; } - - /// - /// Список ошибок - /// - List Errors { get; } - - /// - /// Добавляет другое состояние (например, результат другого действия, который возвращает ). - /// - /// Запись состояния - void AddState (IActionState state); -} \ No newline at end of file diff --git a/anbs_cp/Interfaces/IActionStateMessage.cs b/anbs_cp/Interfaces/IActionStateMessage.cs deleted file mode 100644 index 65e00e4..0000000 --- a/anbs_cp/Interfaces/IActionStateMessage.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace anbs_cp.Interfaces; - -/// -/// Интерфейс сообщения состояния -/// -public interface IActionStateMessage: ISerializable -{ - /// - /// Критичность сообщения - /// - public bool IsCritical { get; set; } - - /// - /// Объект сообщения - /// - public object Object { get; set; } - - /// - /// Текст сообщения - /// - public string Message { get; set; } - - /// - /// Функция вывода сообщения - /// - /// Строка-форматирование (например, «[{0}] - {1}») - /// Отформатированную строка - public string PrintMessage (string format) => string.Format (format, Object, Message); -} \ No newline at end of file diff --git a/anbs_cp/anbs_cp.csproj b/anbs_cp/anbs_cp.csproj index 3f9ecca..8a8c5c2 100644 --- a/anbs_cp/anbs_cp.csproj +++ b/anbs_cp/anbs_cp.csproj @@ -2,7 +2,7 @@ net8.0 - 2024.3.26.1 + 2024.3.26.2 Александр Бабаев Набор компонентов ANB Software Библиотека полезных методов языка C#