diff --git a/anbs_cp/Classes/ActionError.cs b/anbs_cp/Classes/ActionError.cs deleted file mode 100644 index fd6906e..0000000 --- a/anbs_cp/Classes/ActionError.cs +++ /dev/null @@ -1,63 +0,0 @@ -using anbs_cp.Interfaces; - -namespace anbs_cp.Classes; - -/// -/// Класс ошибки -/// -public sealed class ActionError: IActionError -{ - /// - /// Критичность ошибки: - /// при некритичных ошибках продолжение выполнения операции возможно, - /// а при критичных -- нет - /// - public bool IsCritical { get; init; } - - /// - /// Объект ошибки - /// - public object Object { get; set; } - - /// - /// Сообщение об ошибке - /// - public string Message { get; set; } - - #region Конструкторы - /// - /// Конструктор по умолчанию - /// - public ActionError () - { - IsCritical = true; - Object = "Not Implemented"; - Message = "Not Implemented"; - } - - /// - /// Конструктор с 2 параметрами - /// - /// Сообщение - /// Критичность ошибки - public ActionError (string message, bool isCritical = true) - { - IsCritical = isCritical; - Object = ""; - Message = message; - } - - /// - /// Конструктор с 3 параметрами - /// - /// Объект ошибки - /// Сообщение - /// Критичность ошибки - public ActionError (object eObject, string message, bool isCritical = true) - { - IsCritical = isCritical; - Object = eObject; - Message = message; - } - #endregion -} \ No newline at end of file diff --git a/anbs_cp/Classes/ActionInfo.cs b/anbs_cp/Classes/ActionInfo.cs deleted file mode 100644 index e2acadf..0000000 --- a/anbs_cp/Classes/ActionInfo.cs +++ /dev/null @@ -1,49 +0,0 @@ -using anbs_cp.Interfaces; - -namespace anbs_cp.Classes; - -/// -/// Класс предупреждения -/// -public sealed class ActionInfo: IActionInfo -{ - #region Конструкторы - /// - /// Конструктор по умолчанию - /// - public ActionInfo () - { - IsStatusInfo = false; - Object = string.Empty; - Message = string.Empty; - } - - /// - /// Конструктор - /// - /// Объект - /// Сообщение - /// Является статусной информацией? - public ActionInfo (string eObject, string message, bool isStatus = false) - { - IsStatusInfo = isStatus; - Object = eObject; - Message = message; - } - #endregion - - #region Реализация интерфейса - /// - /// Объект - /// - public object Object { get; set; } - /// - /// Сообщение - /// - public string Message { get; set; } - /// - /// Статусная информация (например, начало работы) - /// - public bool IsStatusInfo { get; init; } - #endregion -} \ No newline at end of file diff --git a/anbs_cp/Classes/ActionState.cs b/anbs_cp/Classes/ActionState.cs index 6cae088..c3e93c6 100644 --- a/anbs_cp/Classes/ActionState.cs +++ b/anbs_cp/Classes/ActionState.cs @@ -1,10 +1,16 @@ -using anbs_cp.Interfaces; +// ReSharper disable MemberCanBePrivate.Global +// ReSharper disable UnusedAutoPropertyAccessor.Global +using anbs_cp.Enums; +using anbs_cp.Interfaces; namespace anbs_cp.Classes; /* История версий + Обновлено 2024.03.26 + * Все интерфейсы объеденены в один IActionStateMessage + Обновлено 2023.12.10 * Заменены классы Action* на соответствующие интерфейсы * Класс ActionState теперь наследует интерфейс IActionState, позволяющий добавлять состояния (ошибки, предупреждения и информацию) @@ -50,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; } /// /// Значение @@ -115,13 +121,13 @@ public class ActionState: IActionState /// Ошибка // ReSharper disable once MemberCanBeMadeStatic.Global // ReSharper disable once FunctionRecursiveOnAllPaths - public void AddError (IActionError error) => Errors.Add(error); + public void AddError (IActionStateMessage error) => Errors.Add(error); /// /// Добавляет ошибки в список /// /// Список ошибок - public void AddErrors (IEnumerable errors) => Errors.AddRange(errors); + public void AddErrors (IEnumerable errors) => Errors.AddRange(errors); /// /// Добавление ошибки @@ -130,7 +136,7 @@ public class ActionState: IActionState public void AddError (bool critical = true) { //Создаю ошибку - ActionError error = new("", critical); + ActionStateMessage error = new("", critical); //Добавляю ошибку AddError(error); @@ -144,7 +150,7 @@ public class ActionState: IActionState public void AddError (string message, bool critical = true) { //Создаю ошибку - ActionError error = new(message, critical); + ActionStateMessage error = new(message, critical); //Добавляю ошибку AddError(error); @@ -159,7 +165,7 @@ public class ActionState: IActionState public void AddError (string errorObject, string message, bool critical = true) { //Создаю ошибку - ActionError error = new(errorObject, message, critical); + ActionStateMessage error = new(errorObject, message, critical); //Добавляю ошибку AddError(error); @@ -171,13 +177,13 @@ public class ActionState: IActionState /// Добавление предупреждения /// /// Предупреждение - public void AddWarning (IActionWarning warning) => Warnings.Add(warning); + public void AddWarning (IActionStateMessage warning) => Warnings.Add(warning); /// /// Добавление предупреждений /// /// Список предупреждений - public void AddWarnings (IEnumerable warnings) => Warnings.AddRange(warnings); + public void AddWarnings (IEnumerable warnings) => Warnings.AddRange(warnings); /// /// Добавление предупреждение @@ -187,7 +193,7 @@ public class ActionState: IActionState public void AddWarning (string message, string warningObject = "") { //Создаю предупреждение - ActionWarning warning = new(warningObject, message); + ActionStateMessage warning = new(warningObject, message); //Добавляю предупреждение AddWarning(warning); @@ -199,13 +205,13 @@ public class ActionState: IActionState /// Добавление информации /// /// Информация - public void AddInfo (IActionInfo info) => Info.Add(info); + public void AddInfo (IActionStateMessage info) => Info.Add(info); /// /// Добавление информации /// /// Список информации - public void AddInfos (IEnumerable infos) => Info.AddRange(infos); + public void AddInfos (IEnumerable infos) => Info.AddRange(infos); /// /// Добавление информации @@ -215,7 +221,7 @@ public class ActionState: IActionState public void AddInfo (string message, string infoObject = "") { //Создаю информацию - ActionInfo info = new(infoObject, message); + ActionStateMessage info = new(infoObject, message); //Добавляю информацию AddInfo(info); @@ -224,50 +230,46 @@ public class ActionState: IActionState #region Печать /// - /// Печать списка ошибок + /// Печать сообщений /// - /// Формат списка - /// Формат элемента списка - /// Список ошибок в текстовой форме - public string PrintErrorList (string formatList, string formatItem) + /// Область печати + /// Оформление всей области + /// Оформление элемента + /// Текстовое представление выбранных списокв + /// Ошибка при неизвестной области + public string PrintMessage (EActionStatePrintArea area, string formatList, string formatItem) { + // Создаю список + List list = []; + + // Выбираю списки по областям + switch (area) + { + case EActionStatePrintArea.All: + list.AddRange(Errors); + list.AddRange(Warnings); + list.AddRange(Info); + break; + case EActionStatePrintArea.ErrorsAndWarnings: + list.AddRange(Errors); + list.AddRange(Warnings); + break; + case EActionStatePrintArea.ErrorsOnly: + list.AddRange(Errors); + break; + case EActionStatePrintArea.WarningsOnly: + list.AddRange(Warnings); + break; + case EActionStatePrintArea.InfosOnly: + list.AddRange(Info); + break; + default: + throw new ArgumentOutOfRangeException(nameof(area), area, null); + } + + // Создаю элементы string elements = -#pragma warning disable CS8625 - Errors.Aggregate(null, (current, error) => current + error.PrintMessage(formatItem)); -#pragma warning restore CS8625 - - return string.Format(formatList, elements); - } - - /// - /// Печать списка предупреждений - /// - /// Формат списка - /// Формат элемента списка - /// Список предупреждений в текстовой форме - public string PrintWarningList (string formatList, string formatItem) - { - string elements = -#pragma warning disable CS8625 - Warnings.Aggregate(null, -#pragma warning restore CS8625 - (current, warning) => current + warning.PrintMessage(formatItem)); - - return string.Format(formatList, elements); - } - - /// - /// Печать списка информации - /// - /// Формат списка - /// Формат элемента списка - /// Список информации в текстовой форме - public string PrintInfoList (string formatList, string formatItem) - { - string elements = -#pragma warning disable CS8625 - Info.Aggregate(null, (current, info) => current + info.PrintMessage(formatItem)); -#pragma warning restore CS8625 + list.Aggregate(string.Empty, (current, item) => current + item.PrintMessage(formatItem)); return string.Format(formatList, elements); } @@ -288,7 +290,7 @@ public class ActionState: IActionState /// Игнорировать информационные предупреждения /// Наличие предупреждений public bool HasWarnings (bool ignoreInformWarning = false) => ignoreInformWarning - ? Warnings.Any(static warning => !warning.IsInformWarning) + ? Warnings.Any(static warning => warning.IsCritical) : Warnings.Any(); /// @@ -296,7 +298,7 @@ public class ActionState: IActionState /// /// Игнорировать статусные сообщения /// Наличие сообщений - public bool HasInfo (bool ignoreStatus) => ignoreStatus ? Info.Any(static info => !info.IsStatusInfo) : Info.Any(); + public bool HasInfo (bool ignoreStatus) => ignoreStatus ? Info.Any(static info => info.IsCritical) : Info.Any(); /// /// Успешно ли завершилось @@ -320,7 +322,7 @@ public class ActionState: IActionState /// Игнорировать информационные предупреждения /// Количество предупреждений public int WarningsCount (bool ignoreInformWarning = false) => ignoreInformWarning - ? Warnings.Count(static warning => !warning.IsInformWarning) + ? Warnings.Count(static warning => warning.IsCritical) : Warnings.Count; /// @@ -328,7 +330,9 @@ public class ActionState: IActionState /// /// Игнорировать статусные сообщения /// Количество информационных сообщений - public int InfoCount (bool ignoreStatus) => ignoreStatus ? Info.Count(static info => !info.IsStatusInfo) : Info.Count; + public int InfoCount (bool ignoreStatus) => ignoreStatus + ? Info.Count(static info => info.IsCritical) + : Info.Count; #endregion #region Добавление другого состояния diff --git a/anbs_cp/Classes/ActionStateMessage.cs b/anbs_cp/Classes/ActionStateMessage.cs new file mode 100644 index 0000000..220aefd --- /dev/null +++ b/anbs_cp/Classes/ActionStateMessage.cs @@ -0,0 +1,71 @@ +using anbs_cp.Interfaces; + +namespace anbs_cp.Classes; + +/// +public sealed class ActionStateMessage: IActionStateMessage +{ + /// + public bool IsCritical { get; set; } + + /// + public object Object { get; set; } + + /// + public string Message { get; set; } + + #region Конструкторы + /// + /// Конструктор по умолчанию + /// + // ReSharper disable once MemberCanBePrivate.Global + public ActionStateMessage () + { + IsCritical = true; + Object = "Not Implemented"; + Message = "Not Implemented"; + } + + /// + /// Конструктор с 2 параметрами + /// + /// Сообщение + /// Критичность сообщения + public ActionStateMessage (string message, bool isCritical = true) + { + IsCritical = isCritical; + Object = ""; + Message = message; + } + + /// + /// Конструктор с 3 параметрами + /// + /// Объект сообщения + /// Сообщение + /// Критичность сообщения + public ActionStateMessage (object eObject, string message, bool isCritical = true) + { + IsCritical = isCritical; + Object = eObject; + Message = message; + } + #endregion + + #region Реализация интерфейса ISerializable + /// + public string Serialize () => new SysTextSerializer().Serialize(this); + + /// + public void Deserialize (string json) + { + // Десериализую строку + ActionStateMessage item = new SysTextSerializer().Deserialize(json) ?? new(); + + // Передаю параметры + IsCritical = item.IsCritical; + Object = item.Object; + Message = item.Message; + } + #endregion +} \ No newline at end of file diff --git a/anbs_cp/Classes/ActionWarning.cs b/anbs_cp/Classes/ActionWarning.cs deleted file mode 100644 index e25a6c7..0000000 --- a/anbs_cp/Classes/ActionWarning.cs +++ /dev/null @@ -1,49 +0,0 @@ -using anbs_cp.Interfaces; - -namespace anbs_cp.Classes; - -/// -/// Класс предупреждения -/// -public sealed class ActionWarning: IActionWarning -{ - #region Конструкторы - /// - /// Конструктор по умолчанию - /// - public ActionWarning () - { - IsInformWarning = false; - Object = string.Empty; - Message = string.Empty; - } - - /// - /// Конструктор - /// - /// Объект - /// Сообщение - /// Является ли информирующим предупреждением - public ActionWarning (string eObject, string message, bool isInform = false) - { - IsInformWarning = isInform; - Object = eObject; - Message = message; - } - #endregion - - #region Реализация интерфейса - /// - /// Объект - /// - public object Object { get; set; } - /// - /// Сообщение - /// - public string Message { get; set; } - /// - /// Информирующее предупреждение возникает для предупреждения ВОЗМОЖНОЙ ошибки в дальнейшей эксплуатации и не влияет на текущую операцию. - /// - public bool IsInformWarning { get; init; } - #endregion -} \ No newline at end of file diff --git a/anbs_cp/Classes/ConsoleParamsParser.cs b/anbs_cp/Classes/ConsoleParamsParser.cs index 42afa20..28c7688 100644 --- a/anbs_cp/Classes/ConsoleParamsParser.cs +++ b/anbs_cp/Classes/ConsoleParamsParser.cs @@ -19,7 +19,7 @@ public sealed class ConsoleParamsParser (IEnumerable consoleParams) private static KeyValueList ParseConsoleParams (IEnumerable paramsList) { //Создаю список параметров - KeyValueList result = new(); + KeyValueList result = []; //Заполняю его foreach (string consoleParam in paramsList) @@ -61,6 +61,6 @@ public sealed class ConsoleParamsParser (IEnumerable consoleParams) /// Получает список всех параметров /// /// Список всех параметров - public List GetParamsList () => - _paramsList.Select(static keyValue => keyValue.Key?.ToLower()).ToList(); + public List GetParamsList () => + _paramsList.Select(static keyValue => keyValue.Key.ToLower()).ToList(); } \ No newline at end of file diff --git a/anbs_cp/Classes/FileExtensions.cs b/anbs_cp/Classes/FileExtensions.cs index 2ac496c..9ee3bb8 100644 --- a/anbs_cp/Classes/FileExtensions.cs +++ b/anbs_cp/Classes/FileExtensions.cs @@ -10,7 +10,7 @@ public static class FileExtension /// /// Имя файла /// MIME-тип файла - public static string MIMEType (string filename) => + public static string MimeType (string filename) => MimeTypes.GetMimeType(filename); /// diff --git a/anbs_cp/Enums/EActionStatePrintArea.cs b/anbs_cp/Enums/EActionStatePrintArea.cs new file mode 100644 index 0000000..e08e5f3 --- /dev/null +++ b/anbs_cp/Enums/EActionStatePrintArea.cs @@ -0,0 +1,32 @@ +namespace anbs_cp.Enums; + +/// +/// Область печати состояния действия +/// +public enum EActionStatePrintArea +{ + /// + /// Все (сообщения, предупреждения, ошибки) + /// + All = 0, + + /// + /// Только предупреждения и ошибки + /// + ErrorsAndWarnings = 1, + + /// + /// Только ошибки + /// + ErrorsOnly = 2, + + /// + /// Только предупреждения + /// + WarningsOnly = 3, + + /// + /// Только информационные сообщения + /// + InfosOnly = 4 +} \ No newline at end of file diff --git a/anbs_cp/Interfaces/IActionError.cs b/anbs_cp/Interfaces/IActionError.cs deleted file mode 100644 index 38cf7bb..0000000 --- a/anbs_cp/Interfaces/IActionError.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace anbs_cp.Interfaces; - -/// -/// Интерфейс ошибки -/// -public interface IActionError : IActionStateMessage -{ - /// - /// Критичность ошибки: - /// при некритичных ошибках продолжение выполнения операции возможно, - /// а при критичных -- нет - /// - public bool IsCritical { get; init; } -} \ No newline at end of file diff --git a/anbs_cp/Interfaces/IActionInfo.cs b/anbs_cp/Interfaces/IActionInfo.cs deleted file mode 100644 index c48f47c..0000000 --- a/anbs_cp/Interfaces/IActionInfo.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace anbs_cp.Interfaces; - -/// -/// Интерфейс для информации по статусу -/// -public interface IActionInfo : IActionStateMessage -{ - /// - /// Статусная информация (например, начало работы) - /// - public bool IsStatusInfo { get; init; } -} \ No newline at end of file diff --git a/anbs_cp/Interfaces/IActionState.cs b/anbs_cp/Interfaces/IActionState.cs index 138d60e..cdbbc0a 100644 --- a/anbs_cp/Interfaces/IActionState.cs +++ b/anbs_cp/Interfaces/IActionState.cs @@ -10,22 +10,21 @@ public interface IActionState /// /// Список информации /// - List Info { get; } + List Info { get; } /// /// Список предупреждений /// - List Warnings { get; } + List Warnings { get; } /// /// Список ошибок /// - List Errors { 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 index e6af12b..65e00e4 100644 --- a/anbs_cp/Interfaces/IActionStateMessage.cs +++ b/anbs_cp/Interfaces/IActionStateMessage.cs @@ -3,8 +3,13 @@ /// /// Интерфейс сообщения состояния /// -public interface IActionStateMessage +public interface IActionStateMessage: ISerializable { + /// + /// Критичность сообщения + /// + public bool IsCritical { get; set; } + /// /// Объект сообщения /// diff --git a/anbs_cp/Interfaces/IActionWarning.cs b/anbs_cp/Interfaces/IActionWarning.cs deleted file mode 100644 index 23ec4cc..0000000 --- a/anbs_cp/Interfaces/IActionWarning.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace anbs_cp.Interfaces; - -/// -/// Интерфейс предупреждения -/// -public interface IActionWarning : IActionStateMessage -{ - /// - /// Информирующее предупреждение возникает для предупреждения ВОЗМОЖНОЙ ошибки в дальнейшей эксплуатации и не влияет на текущую операцию. - /// - public bool IsInformWarning { get; init; } -} \ No newline at end of file diff --git a/anbs_cp/Interfaces/IValueFormatter.cs b/anbs_cp/Interfaces/IValueFormatter.cs index 2ae523d..fb31d26 100644 --- a/anbs_cp/Interfaces/IValueFormatter.cs +++ b/anbs_cp/Interfaces/IValueFormatter.cs @@ -65,6 +65,7 @@ public interface IValueFormatter for (int i = 0; i <= DecimalPlaces; i++) delim *= 10; + // ReSharper disable once PossibleLossOfFraction decimal value = Math.Round((decimal)(dividend * delim / divider)) / delim; return $"{value}"; diff --git a/anbs_cp/anbs_cp.csproj b/anbs_cp/anbs_cp.csproj index a72762c..f007746 100644 --- a/anbs_cp/anbs_cp.csproj +++ b/anbs_cp/anbs_cp.csproj @@ -2,7 +2,7 @@ net8.0 - 2024.3.01.1 + 2024.3.26 Александр Бабаев Набор компонентов ANB Software Библиотека полезных методов языка C# @@ -45,8 +45,4 @@ - - - - diff --git a/anbs_cpdb/Interfaces/IDbEngine.cs b/anbs_cpdb/Interfaces/IDbEngine.cs index b4f5943..60814c8 100644 --- a/anbs_cpdb/Interfaces/IDbEngine.cs +++ b/anbs_cpdb/Interfaces/IDbEngine.cs @@ -1,6 +1,4 @@ -using System.Transactions; - -namespace anbs_cp.Database.Interfaces; +namespace anbs_cp.Database.Interfaces; /// /// Интерфейс для работы с базой данных diff --git a/anbs_cpdb/anbs_cpdb.csproj b/anbs_cpdb/anbs_cpdb.csproj index 58ca5bb..5784956 100644 --- a/anbs_cpdb/anbs_cpdb.csproj +++ b/anbs_cpdb/anbs_cpdb.csproj @@ -8,7 +8,7 @@ anbs_cp.Database True ANBSoftware.ComponentsPack.Database - 2024.3.11.0 + 2024.3.25 Александр Бабаев Набор компонентов ANB Software для работы с БД Библиотека полезных методов языка C# для работы с базами данных diff --git a/anbs_cpfn/Classes/NetFileExtension.cs b/anbs_cpfn/Classes/NetFileExtension.cs index bef0227..3ff473d 100644 --- a/anbs_cpfn/Classes/NetFileExtension.cs +++ b/anbs_cpfn/Classes/NetFileExtension.cs @@ -12,6 +12,6 @@ public class NetFileExtension /// /// Загружаемый файл /// MIME-тип файла - public static string MIMEType (IFormFile file) => + public static string MimeType (IFormFile file) => file.ContentType; } \ No newline at end of file diff --git a/anbs_cpfn/anbs_cpfn.csproj b/anbs_cpfn/anbs_cpfn.csproj index bc00046..c2ad934 100644 --- a/anbs_cpfn/anbs_cpfn.csproj +++ b/anbs_cpfn/anbs_cpfn.csproj @@ -6,7 +6,7 @@ enable True ANBSoftware.ComponentsPackForNet - 2024.3.11.1 + 2024.3.26 Александр Бабаев Набор компонентов ANB Software для ASP.NET Core Библиотека полезных методов языка C# для ASP.NET Core diff --git a/anbsoftware.componentspack.sln.DotSettings b/anbsoftware.componentspack.sln.DotSettings index 37099bd..3ae7316 100644 --- a/anbsoftware.componentspack.sln.DotSettings +++ b/anbsoftware.componentspack.sln.DotSettings @@ -2,6 +2,7 @@ CD HD HDD + IP RA RAM True @@ -11,6 +12,7 @@ True True True + True True True True diff --git a/demo/FileHashAndMimeTypeTest.cs b/demo/FileHashAndMimeTypeTest.cs index 69f7cf4..6e28617 100644 --- a/demo/FileHashAndMimeTypeTest.cs +++ b/demo/FileHashAndMimeTypeTest.cs @@ -24,7 +24,7 @@ private void GetFileHashAndMimeType() } string fileHash = new FileHash(fileNameEdt.Text).ToString(); - string fileType = FileExtension.MIMEType(fileNameEdt.Text); + string fileType = FileExtension.MimeType(fileNameEdt.Text); ResultLabel.Text = $" \r\n{fileNameEdt.Text}\r\n :\r\n{fileHash}\r\n :\r\n{fileType}";