20240326
This commit is contained in:
parent
66b5f5741b
commit
16cd01cc7e
@ -1,63 +0,0 @@
|
|||||||
using anbs_cp.Interfaces;
|
|
||||||
|
|
||||||
namespace anbs_cp.Classes;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Класс ошибки
|
|
||||||
/// </summary>
|
|
||||||
public sealed class ActionError: IActionError
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Критичность ошибки:
|
|
||||||
/// при некритичных ошибках продолжение выполнения операции возможно,
|
|
||||||
/// а при критичных -- нет
|
|
||||||
/// </summary>
|
|
||||||
public bool IsCritical { get; init; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Объект ошибки
|
|
||||||
/// </summary>
|
|
||||||
public object Object { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Сообщение об ошибке
|
|
||||||
/// </summary>
|
|
||||||
public string Message { get; set; }
|
|
||||||
|
|
||||||
#region Конструкторы
|
|
||||||
/// <summary>
|
|
||||||
/// Конструктор по умолчанию
|
|
||||||
/// </summary>
|
|
||||||
public ActionError ()
|
|
||||||
{
|
|
||||||
IsCritical = true;
|
|
||||||
Object = "Not Implemented";
|
|
||||||
Message = "Not Implemented";
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Конструктор с 2 параметрами
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="message">Сообщение</param>
|
|
||||||
/// <param name="isCritical">Критичность ошибки</param>
|
|
||||||
public ActionError (string message, bool isCritical = true)
|
|
||||||
{
|
|
||||||
IsCritical = isCritical;
|
|
||||||
Object = "";
|
|
||||||
Message = message;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Конструктор с 3 параметрами
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="eObject">Объект ошибки</param>
|
|
||||||
/// <param name="message">Сообщение</param>
|
|
||||||
/// <param name="isCritical">Критичность ошибки</param>
|
|
||||||
public ActionError (object eObject, string message, bool isCritical = true)
|
|
||||||
{
|
|
||||||
IsCritical = isCritical;
|
|
||||||
Object = eObject;
|
|
||||||
Message = message;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
using anbs_cp.Interfaces;
|
|
||||||
|
|
||||||
namespace anbs_cp.Classes;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Класс предупреждения
|
|
||||||
/// </summary>
|
|
||||||
public sealed class ActionInfo: IActionInfo
|
|
||||||
{
|
|
||||||
#region Конструкторы
|
|
||||||
/// <summary>
|
|
||||||
/// Конструктор по умолчанию
|
|
||||||
/// </summary>
|
|
||||||
public ActionInfo ()
|
|
||||||
{
|
|
||||||
IsStatusInfo = false;
|
|
||||||
Object = string.Empty;
|
|
||||||
Message = string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Конструктор
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="eObject">Объект</param>
|
|
||||||
/// <param name="message">Сообщение</param>
|
|
||||||
/// <param name="isStatus">Является статусной информацией?</param>
|
|
||||||
public ActionInfo (string eObject, string message, bool isStatus = false)
|
|
||||||
{
|
|
||||||
IsStatusInfo = isStatus;
|
|
||||||
Object = eObject;
|
|
||||||
Message = message;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Реализация интерфейса
|
|
||||||
/// <summary>
|
|
||||||
/// Объект
|
|
||||||
/// </summary>
|
|
||||||
public object Object { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Сообщение
|
|
||||||
/// </summary>
|
|
||||||
public string Message { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Статусная информация (например, начало работы)
|
|
||||||
/// </summary>
|
|
||||||
public bool IsStatusInfo { get; init; }
|
|
||||||
#endregion
|
|
||||||
}
|
|
@ -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;
|
namespace anbs_cp.Classes;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
История версий
|
История версий
|
||||||
|
|
||||||
|
Обновлено 2024.03.26
|
||||||
|
* Все интерфейсы объеденены в один IActionStateMessage
|
||||||
|
|
||||||
Обновлено 2023.12.10
|
Обновлено 2023.12.10
|
||||||
* Заменены классы Action* на соответствующие интерфейсы
|
* Заменены классы Action* на соответствующие интерфейсы
|
||||||
* Класс ActionState теперь наследует интерфейс IActionState, позволяющий добавлять состояния (ошибки, предупреждения и информацию)
|
* Класс ActionState теперь наследует интерфейс IActionState, позволяющий добавлять состояния (ошибки, предупреждения и информацию)
|
||||||
@ -50,17 +56,17 @@ public class ActionState<T>: IActionState
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Список информации
|
/// Список информации
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<IActionInfo> Info { get; }
|
public List<IActionStateMessage> Info { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Список предупреждений
|
/// Список предупреждений
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<IActionWarning> Warnings { get; }
|
public List<IActionStateMessage> Warnings { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Список ошибок
|
/// Список ошибок
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<IActionError> Errors { get; }
|
public List<IActionStateMessage> Errors { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Значение
|
/// Значение
|
||||||
@ -115,13 +121,13 @@ public class ActionState<T>: IActionState
|
|||||||
/// <param name="error">Ошибка</param>
|
/// <param name="error">Ошибка</param>
|
||||||
// ReSharper disable once MemberCanBeMadeStatic.Global
|
// ReSharper disable once MemberCanBeMadeStatic.Global
|
||||||
// ReSharper disable once FunctionRecursiveOnAllPaths
|
// ReSharper disable once FunctionRecursiveOnAllPaths
|
||||||
public void AddError (IActionError error) => Errors.Add(error);
|
public void AddError (IActionStateMessage error) => Errors.Add(error);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавляет ошибки в список
|
/// Добавляет ошибки в список
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="errors">Список ошибок</param>
|
/// <param name="errors">Список ошибок</param>
|
||||||
public void AddErrors (IEnumerable<IActionError> errors) => Errors.AddRange(errors);
|
public void AddErrors (IEnumerable<IActionStateMessage> errors) => Errors.AddRange(errors);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавление ошибки
|
/// Добавление ошибки
|
||||||
@ -130,7 +136,7 @@ public class ActionState<T>: IActionState
|
|||||||
public void AddError (bool critical = true)
|
public void AddError (bool critical = true)
|
||||||
{
|
{
|
||||||
//Создаю ошибку
|
//Создаю ошибку
|
||||||
ActionError error = new("", critical);
|
ActionStateMessage error = new("", critical);
|
||||||
|
|
||||||
//Добавляю ошибку
|
//Добавляю ошибку
|
||||||
AddError(error);
|
AddError(error);
|
||||||
@ -144,7 +150,7 @@ public class ActionState<T>: IActionState
|
|||||||
public void AddError (string message, bool critical = true)
|
public void AddError (string message, bool critical = true)
|
||||||
{
|
{
|
||||||
//Создаю ошибку
|
//Создаю ошибку
|
||||||
ActionError error = new(message, critical);
|
ActionStateMessage error = new(message, critical);
|
||||||
|
|
||||||
//Добавляю ошибку
|
//Добавляю ошибку
|
||||||
AddError(error);
|
AddError(error);
|
||||||
@ -159,7 +165,7 @@ public class ActionState<T>: IActionState
|
|||||||
public void AddError (string errorObject, string message, bool critical = true)
|
public void AddError (string errorObject, string message, bool critical = true)
|
||||||
{
|
{
|
||||||
//Создаю ошибку
|
//Создаю ошибку
|
||||||
ActionError error = new(errorObject, message, critical);
|
ActionStateMessage error = new(errorObject, message, critical);
|
||||||
|
|
||||||
//Добавляю ошибку
|
//Добавляю ошибку
|
||||||
AddError(error);
|
AddError(error);
|
||||||
@ -171,13 +177,13 @@ public class ActionState<T>: IActionState
|
|||||||
/// Добавление предупреждения
|
/// Добавление предупреждения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="warning">Предупреждение</param>
|
/// <param name="warning">Предупреждение</param>
|
||||||
public void AddWarning (IActionWarning warning) => Warnings.Add(warning);
|
public void AddWarning (IActionStateMessage warning) => Warnings.Add(warning);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавление предупреждений
|
/// Добавление предупреждений
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="warnings">Список предупреждений</param>
|
/// <param name="warnings">Список предупреждений</param>
|
||||||
public void AddWarnings (IEnumerable<IActionWarning> warnings) => Warnings.AddRange(warnings);
|
public void AddWarnings (IEnumerable<IActionStateMessage> warnings) => Warnings.AddRange(warnings);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавление предупреждение
|
/// Добавление предупреждение
|
||||||
@ -187,7 +193,7 @@ public class ActionState<T>: IActionState
|
|||||||
public void AddWarning (string message, string warningObject = "")
|
public void AddWarning (string message, string warningObject = "")
|
||||||
{
|
{
|
||||||
//Создаю предупреждение
|
//Создаю предупреждение
|
||||||
ActionWarning warning = new(warningObject, message);
|
ActionStateMessage warning = new(warningObject, message);
|
||||||
|
|
||||||
//Добавляю предупреждение
|
//Добавляю предупреждение
|
||||||
AddWarning(warning);
|
AddWarning(warning);
|
||||||
@ -199,13 +205,13 @@ public class ActionState<T>: IActionState
|
|||||||
/// Добавление информации
|
/// Добавление информации
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="info">Информация</param>
|
/// <param name="info">Информация</param>
|
||||||
public void AddInfo (IActionInfo info) => Info.Add(info);
|
public void AddInfo (IActionStateMessage info) => Info.Add(info);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавление информации
|
/// Добавление информации
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="infos">Список информации</param>
|
/// <param name="infos">Список информации</param>
|
||||||
public void AddInfos (IEnumerable<IActionInfo> infos) => Info.AddRange(infos);
|
public void AddInfos (IEnumerable<IActionStateMessage> infos) => Info.AddRange(infos);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавление информации
|
/// Добавление информации
|
||||||
@ -215,7 +221,7 @@ public class ActionState<T>: IActionState
|
|||||||
public void AddInfo (string message, string infoObject = "")
|
public void AddInfo (string message, string infoObject = "")
|
||||||
{
|
{
|
||||||
//Создаю информацию
|
//Создаю информацию
|
||||||
ActionInfo info = new(infoObject, message);
|
ActionStateMessage info = new(infoObject, message);
|
||||||
|
|
||||||
//Добавляю информацию
|
//Добавляю информацию
|
||||||
AddInfo(info);
|
AddInfo(info);
|
||||||
@ -224,50 +230,46 @@ public class ActionState<T>: IActionState
|
|||||||
|
|
||||||
#region Печать
|
#region Печать
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Печать списка ошибок
|
/// Печать сообщений
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="formatList">Формат списка</param>
|
/// <param name="area">Область печати</param>
|
||||||
/// <param name="formatItem">Формат элемента списка</param>
|
/// <param name="formatList">Оформление всей области</param>
|
||||||
/// <returns>Список ошибок в текстовой форме</returns>
|
/// <param name="formatItem">Оформление элемента</param>
|
||||||
public string PrintErrorList (string formatList, string formatItem)
|
/// <returns>Текстовое представление выбранных списокв</returns>
|
||||||
|
/// <exception cref="ArgumentOutOfRangeException">Ошибка при неизвестной области</exception>
|
||||||
|
public string PrintMessage (EActionStatePrintArea area, string formatList, string formatItem)
|
||||||
{
|
{
|
||||||
|
// Создаю список
|
||||||
|
List<IActionStateMessage> 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 =
|
string elements =
|
||||||
#pragma warning disable CS8625
|
list.Aggregate(string.Empty, (current, item) => current + item.PrintMessage(formatItem));
|
||||||
Errors.Aggregate<IActionError, string>(null, (current, error) => current + error.PrintMessage(formatItem));
|
|
||||||
#pragma warning restore CS8625
|
|
||||||
|
|
||||||
return string.Format(formatList, elements);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Печать списка предупреждений
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="formatList">Формат списка</param>
|
|
||||||
/// <param name="formatItem">Формат элемента списка</param>
|
|
||||||
/// <returns>Список предупреждений в текстовой форме</returns>
|
|
||||||
public string PrintWarningList (string formatList, string formatItem)
|
|
||||||
{
|
|
||||||
string elements =
|
|
||||||
#pragma warning disable CS8625
|
|
||||||
Warnings.Aggregate<IActionWarning, string>(null,
|
|
||||||
#pragma warning restore CS8625
|
|
||||||
(current, warning) => current + warning.PrintMessage(formatItem));
|
|
||||||
|
|
||||||
return string.Format(formatList, elements);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Печать списка информации
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="formatList">Формат списка</param>
|
|
||||||
/// <param name="formatItem">Формат элемента списка</param>
|
|
||||||
/// <returns>Список информации в текстовой форме</returns>
|
|
||||||
public string PrintInfoList (string formatList, string formatItem)
|
|
||||||
{
|
|
||||||
string elements =
|
|
||||||
#pragma warning disable CS8625
|
|
||||||
Info.Aggregate<IActionInfo, string>(null, (current, info) => current + info.PrintMessage(formatItem));
|
|
||||||
#pragma warning restore CS8625
|
|
||||||
|
|
||||||
return string.Format(formatList, elements);
|
return string.Format(formatList, elements);
|
||||||
}
|
}
|
||||||
@ -288,7 +290,7 @@ public class ActionState<T>: IActionState
|
|||||||
/// <param name="ignoreInformWarning">Игнорировать информационные предупреждения</param>
|
/// <param name="ignoreInformWarning">Игнорировать информационные предупреждения</param>
|
||||||
/// <returns>Наличие предупреждений</returns>
|
/// <returns>Наличие предупреждений</returns>
|
||||||
public bool HasWarnings (bool ignoreInformWarning = false) => ignoreInformWarning
|
public bool HasWarnings (bool ignoreInformWarning = false) => ignoreInformWarning
|
||||||
? Warnings.Any(static warning => !warning.IsInformWarning)
|
? Warnings.Any(static warning => warning.IsCritical)
|
||||||
: Warnings.Any();
|
: Warnings.Any();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -296,7 +298,7 @@ public class ActionState<T>: IActionState
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ignoreStatus">Игнорировать статусные сообщения</param>
|
/// <param name="ignoreStatus">Игнорировать статусные сообщения</param>
|
||||||
/// <returns>Наличие сообщений</returns>
|
/// <returns>Наличие сообщений</returns>
|
||||||
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();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Успешно ли завершилось
|
/// Успешно ли завершилось
|
||||||
@ -320,7 +322,7 @@ public class ActionState<T>: IActionState
|
|||||||
/// <param name="ignoreInformWarning">Игнорировать информационные предупреждения</param>
|
/// <param name="ignoreInformWarning">Игнорировать информационные предупреждения</param>
|
||||||
/// <returns>Количество предупреждений</returns>
|
/// <returns>Количество предупреждений</returns>
|
||||||
public int WarningsCount (bool ignoreInformWarning = false) => ignoreInformWarning
|
public int WarningsCount (bool ignoreInformWarning = false) => ignoreInformWarning
|
||||||
? Warnings.Count(static warning => !warning.IsInformWarning)
|
? Warnings.Count(static warning => warning.IsCritical)
|
||||||
: Warnings.Count;
|
: Warnings.Count;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -328,7 +330,9 @@ public class ActionState<T>: IActionState
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ignoreStatus">Игнорировать статусные сообщения</param>
|
/// <param name="ignoreStatus">Игнорировать статусные сообщения</param>
|
||||||
/// <returns>Количество информационных сообщений</returns>
|
/// <returns>Количество информационных сообщений</returns>
|
||||||
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
|
#endregion
|
||||||
|
|
||||||
#region Добавление другого состояния
|
#region Добавление другого состояния
|
||||||
|
71
anbs_cp/Classes/ActionStateMessage.cs
Normal file
71
anbs_cp/Classes/ActionStateMessage.cs
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
using anbs_cp.Interfaces;
|
||||||
|
|
||||||
|
namespace anbs_cp.Classes;
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public sealed class ActionStateMessage: IActionStateMessage
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public bool IsCritical { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public object Object { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public string Message { get; set; }
|
||||||
|
|
||||||
|
#region Конструкторы
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор по умолчанию
|
||||||
|
/// </summary>
|
||||||
|
// ReSharper disable once MemberCanBePrivate.Global
|
||||||
|
public ActionStateMessage ()
|
||||||
|
{
|
||||||
|
IsCritical = true;
|
||||||
|
Object = "Not Implemented";
|
||||||
|
Message = "Not Implemented";
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор с 2 параметрами
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="message">Сообщение</param>
|
||||||
|
/// <param name="isCritical">Критичность сообщения</param>
|
||||||
|
public ActionStateMessage (string message, bool isCritical = true)
|
||||||
|
{
|
||||||
|
IsCritical = isCritical;
|
||||||
|
Object = "";
|
||||||
|
Message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор с 3 параметрами
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="eObject">Объект сообщения</param>
|
||||||
|
/// <param name="message">Сообщение</param>
|
||||||
|
/// <param name="isCritical">Критичность сообщения</param>
|
||||||
|
public ActionStateMessage (object eObject, string message, bool isCritical = true)
|
||||||
|
{
|
||||||
|
IsCritical = isCritical;
|
||||||
|
Object = eObject;
|
||||||
|
Message = message;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Реализация интерфейса ISerializable
|
||||||
|
/// <inheritdoc />
|
||||||
|
public string Serialize () => new SysTextSerializer().Serialize(this);
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public void Deserialize (string json)
|
||||||
|
{
|
||||||
|
// Десериализую строку
|
||||||
|
ActionStateMessage item = new SysTextSerializer().Deserialize<ActionStateMessage>(json) ?? new();
|
||||||
|
|
||||||
|
// Передаю параметры
|
||||||
|
IsCritical = item.IsCritical;
|
||||||
|
Object = item.Object;
|
||||||
|
Message = item.Message;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
@ -1,49 +0,0 @@
|
|||||||
using anbs_cp.Interfaces;
|
|
||||||
|
|
||||||
namespace anbs_cp.Classes;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Класс предупреждения
|
|
||||||
/// </summary>
|
|
||||||
public sealed class ActionWarning: IActionWarning
|
|
||||||
{
|
|
||||||
#region Конструкторы
|
|
||||||
/// <summary>
|
|
||||||
/// Конструктор по умолчанию
|
|
||||||
/// </summary>
|
|
||||||
public ActionWarning ()
|
|
||||||
{
|
|
||||||
IsInformWarning = false;
|
|
||||||
Object = string.Empty;
|
|
||||||
Message = string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Конструктор
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="eObject">Объект</param>
|
|
||||||
/// <param name="message">Сообщение</param>
|
|
||||||
/// <param name="isInform">Является ли информирующим предупреждением</param>
|
|
||||||
public ActionWarning (string eObject, string message, bool isInform = false)
|
|
||||||
{
|
|
||||||
IsInformWarning = isInform;
|
|
||||||
Object = eObject;
|
|
||||||
Message = message;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Реализация интерфейса
|
|
||||||
/// <summary>
|
|
||||||
/// Объект
|
|
||||||
/// </summary>
|
|
||||||
public object Object { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Сообщение
|
|
||||||
/// </summary>
|
|
||||||
public string Message { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Информирующее предупреждение возникает для предупреждения ВОЗМОЖНОЙ ошибки в дальнейшей эксплуатации и не влияет на текущую операцию.
|
|
||||||
/// </summary>
|
|
||||||
public bool IsInformWarning { get; init; }
|
|
||||||
#endregion
|
|
||||||
}
|
|
@ -19,7 +19,7 @@ public sealed class ConsoleParamsParser (IEnumerable<string> consoleParams)
|
|||||||
private static KeyValueList<string, string?> ParseConsoleParams (IEnumerable<string> paramsList)
|
private static KeyValueList<string, string?> ParseConsoleParams (IEnumerable<string> paramsList)
|
||||||
{
|
{
|
||||||
//Создаю список параметров
|
//Создаю список параметров
|
||||||
KeyValueList<string, string?> result = new();
|
KeyValueList<string, string?> result = [];
|
||||||
|
|
||||||
//Заполняю его
|
//Заполняю его
|
||||||
foreach (string consoleParam in paramsList)
|
foreach (string consoleParam in paramsList)
|
||||||
@ -61,6 +61,6 @@ public sealed class ConsoleParamsParser (IEnumerable<string> consoleParams)
|
|||||||
/// Получает список всех параметров
|
/// Получает список всех параметров
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Список всех параметров</returns>
|
/// <returns>Список всех параметров</returns>
|
||||||
public List<string?> GetParamsList () =>
|
public List<string> GetParamsList () =>
|
||||||
_paramsList.Select(static keyValue => keyValue.Key?.ToLower()).ToList();
|
_paramsList.Select(static keyValue => keyValue.Key.ToLower()).ToList();
|
||||||
}
|
}
|
@ -10,7 +10,7 @@ public static class FileExtension
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filename">Имя файла</param>
|
/// <param name="filename">Имя файла</param>
|
||||||
/// <returns>MIME-тип файла</returns>
|
/// <returns>MIME-тип файла</returns>
|
||||||
public static string MIMEType (string filename) =>
|
public static string MimeType (string filename) =>
|
||||||
MimeTypes.GetMimeType(filename);
|
MimeTypes.GetMimeType(filename);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
32
anbs_cp/Enums/EActionStatePrintArea.cs
Normal file
32
anbs_cp/Enums/EActionStatePrintArea.cs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
namespace anbs_cp.Enums;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Область печати состояния действия
|
||||||
|
/// </summary>
|
||||||
|
public enum EActionStatePrintArea
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Все (сообщения, предупреждения, ошибки)
|
||||||
|
/// </summary>
|
||||||
|
All = 0,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Только предупреждения и ошибки
|
||||||
|
/// </summary>
|
||||||
|
ErrorsAndWarnings = 1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Только ошибки
|
||||||
|
/// </summary>
|
||||||
|
ErrorsOnly = 2,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Только предупреждения
|
||||||
|
/// </summary>
|
||||||
|
WarningsOnly = 3,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Только информационные сообщения
|
||||||
|
/// </summary>
|
||||||
|
InfosOnly = 4
|
||||||
|
}
|
@ -1,14 +0,0 @@
|
|||||||
namespace anbs_cp.Interfaces;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Интерфейс ошибки
|
|
||||||
/// </summary>
|
|
||||||
public interface IActionError : IActionStateMessage
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Критичность ошибки:
|
|
||||||
/// при некритичных ошибках продолжение выполнения операции возможно,
|
|
||||||
/// а при критичных -- нет
|
|
||||||
/// </summary>
|
|
||||||
public bool IsCritical { get; init; }
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
namespace anbs_cp.Interfaces;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Интерфейс для информации по статусу
|
|
||||||
/// </summary>
|
|
||||||
public interface IActionInfo : IActionStateMessage
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Статусная информация (например, начало работы)
|
|
||||||
/// </summary>
|
|
||||||
public bool IsStatusInfo { get; init; }
|
|
||||||
}
|
|
@ -10,22 +10,21 @@ public interface IActionState
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Список информации
|
/// Список информации
|
||||||
/// </summary>
|
/// </summary>
|
||||||
List<IActionInfo> Info { get; }
|
List<IActionStateMessage> Info { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Список предупреждений
|
/// Список предупреждений
|
||||||
/// </summary>
|
/// </summary>
|
||||||
List<IActionWarning> Warnings { get; }
|
List<IActionStateMessage> Warnings { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Список ошибок
|
/// Список ошибок
|
||||||
/// </summary>
|
/// </summary>
|
||||||
List<IActionError> Errors { get; }
|
List<IActionStateMessage> Errors { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавляет другое состояние (например, результат другого действия, который возвращает <see cref="ActionState{T}"/>).
|
/// Добавляет другое состояние (например, результат другого действия, который возвращает <see cref="ActionState{T}"/>).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T">Тип параметра</typeparam>
|
|
||||||
/// <param name="state">Запись состояния</param>
|
/// <param name="state">Запись состояния</param>
|
||||||
void AddState (IActionState state);
|
void AddState (IActionState state);
|
||||||
}
|
}
|
@ -3,8 +3,13 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Интерфейс сообщения состояния
|
/// Интерфейс сообщения состояния
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IActionStateMessage
|
public interface IActionStateMessage: ISerializable
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Критичность сообщения
|
||||||
|
/// </summary>
|
||||||
|
public bool IsCritical { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Объект сообщения
|
/// Объект сообщения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
namespace anbs_cp.Interfaces;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Интерфейс предупреждения
|
|
||||||
/// </summary>
|
|
||||||
public interface IActionWarning : IActionStateMessage
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Информирующее предупреждение возникает для предупреждения ВОЗМОЖНОЙ ошибки в дальнейшей эксплуатации и не влияет на текущую операцию.
|
|
||||||
/// </summary>
|
|
||||||
public bool IsInformWarning { get; init; }
|
|
||||||
}
|
|
@ -65,6 +65,7 @@ public interface IValueFormatter
|
|||||||
|
|
||||||
for (int i = 0; i <= DecimalPlaces; i++) delim *= 10;
|
for (int i = 0; i <= DecimalPlaces; i++) delim *= 10;
|
||||||
|
|
||||||
|
// ReSharper disable once PossibleLossOfFraction
|
||||||
decimal value = Math.Round((decimal)(dividend * delim / divider)) / delim;
|
decimal value = Math.Round((decimal)(dividend * delim / divider)) / delim;
|
||||||
|
|
||||||
return $"{value}";
|
return $"{value}";
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<Version>2024.3.01.1</Version>
|
<Version>2024.3.26</Version>
|
||||||
<Authors>Александр Бабаев</Authors>
|
<Authors>Александр Бабаев</Authors>
|
||||||
<Product>Набор компонентов ANB Software</Product>
|
<Product>Набор компонентов ANB Software</Product>
|
||||||
<Description>Библиотека полезных методов языка C#</Description>
|
<Description>Библиотека полезных методов языка C#</Description>
|
||||||
@ -45,8 +45,4 @@
|
|||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="Enums\" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
using System.Transactions;
|
namespace anbs_cp.Database.Interfaces;
|
||||||
|
|
||||||
namespace anbs_cp.Database.Interfaces;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Интерфейс для работы с базой данных
|
/// Интерфейс для работы с базой данных
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<RootNamespace>anbs_cp.Database</RootNamespace>
|
<RootNamespace>anbs_cp.Database</RootNamespace>
|
||||||
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
|
||||||
<PackageId>ANBSoftware.ComponentsPack.Database</PackageId>
|
<PackageId>ANBSoftware.ComponentsPack.Database</PackageId>
|
||||||
<Version>2024.3.11.0</Version>
|
<Version>2024.3.25</Version>
|
||||||
<Company>Александр Бабаев</Company>
|
<Company>Александр Бабаев</Company>
|
||||||
<Product>Набор компонентов ANB Software для работы с БД</Product>
|
<Product>Набор компонентов ANB Software для работы с БД</Product>
|
||||||
<Description>Библиотека полезных методов языка C# для работы с базами данных</Description>
|
<Description>Библиотека полезных методов языка C# для работы с базами данных</Description>
|
||||||
|
@ -12,6 +12,6 @@ public class NetFileExtension
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="file">Загружаемый файл</param>
|
/// <param name="file">Загружаемый файл</param>
|
||||||
/// <returns>MIME-тип файла</returns>
|
/// <returns>MIME-тип файла</returns>
|
||||||
public static string MIMEType (IFormFile file) =>
|
public static string MimeType (IFormFile file) =>
|
||||||
file.ContentType;
|
file.ContentType;
|
||||||
}
|
}
|
@ -6,7 +6,7 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
|
||||||
<PackageId>ANBSoftware.ComponentsPackForNet</PackageId>
|
<PackageId>ANBSoftware.ComponentsPackForNet</PackageId>
|
||||||
<Version>2024.3.11.1</Version>
|
<Version>2024.3.26</Version>
|
||||||
<Authors>Александр Бабаев</Authors>
|
<Authors>Александр Бабаев</Authors>
|
||||||
<Product>Набор компонентов ANB Software для ASP.NET Core</Product>
|
<Product>Набор компонентов ANB Software для ASP.NET Core</Product>
|
||||||
<Description>Библиотека полезных методов языка C# для ASP.NET Core</Description>
|
<Description>Библиотека полезных методов языка C# для ASP.NET Core</Description>
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CD/@EntryIndexedValue">CD</s:String>
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CD/@EntryIndexedValue">CD</s:String>
|
||||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HD/@EntryIndexedValue">HD</s:String>
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HD/@EntryIndexedValue">HD</s:String>
|
||||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HDD/@EntryIndexedValue">HDD</s:String>
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HDD/@EntryIndexedValue">HDD</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IP/@EntryIndexedValue">IP</s:String>
|
||||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RA/@EntryIndexedValue">RA</s:String>
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RA/@EntryIndexedValue">RA</s:String>
|
||||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RAM/@EntryIndexedValue">RAM</s:String>
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RAM/@EntryIndexedValue">RAM</s:String>
|
||||||
<s:Boolean x:Key="/Default/GrammarAndSpelling/GrammarChecking/Exceptions/=_0412_044B_0447_0438_0441_043B_044F_0435_0442_002C_0020_0435_0441_0442_044C_0020_043B_0438_0020_0445_043E_0442_044F_0020_0431_044B_0020_043E_0434_043D_043E_0020_0438_0437_0020_0431_0443_043B_0435_0432_044B_0445_0020_043F_0435_0440_0435_043C_0435_043D_043D_044B_0445_0020reference_0432_0020_0437_043D_0430_0447_0435_043D_0438_0438/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/GrammarAndSpelling/GrammarChecking/Exceptions/=_0412_044B_0447_0438_0441_043B_044F_0435_0442_002C_0020_0435_0441_0442_044C_0020_043B_0438_0020_0445_043E_0442_044F_0020_0431_044B_0020_043E_0434_043D_043E_0020_0438_0437_0020_0431_0443_043B_0435_0432_044B_0445_0020_043F_0435_0440_0435_043C_0435_043D_043D_044B_0445_0020reference_0432_0020_0437_043D_0430_0447_0435_043D_0438_0438/@EntryIndexedValue">True</s:Boolean>
|
||||||
@ -11,6 +12,7 @@
|
|||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=appsettings/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=appsettings/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=C_0435_0440_0438_0430_043B_0438_0437_0430_0446_0438_044F/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=C_0435_0440_0438_0430_043B_0438_0437_0430_0446_0438_044F/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Darkseal/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Darkseal/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=delim/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Encryptor/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Encryptor/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Glendower/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Glendower/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0412_0435_0440_043D_0451_043C/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0412_0435_0440_043D_0451_043C/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
@ -24,7 +24,7 @@ private void GetFileHashAndMimeType()
|
|||||||
}
|
}
|
||||||
|
|
||||||
string fileHash = new FileHash(fileNameEdt.Text).ToString();
|
string fileHash = new FileHash(fileNameEdt.Text).ToString();
|
||||||
string fileType = FileExtension.MIMEType(fileNameEdt.Text);
|
string fileType = FileExtension.MimeType(fileNameEdt.Text);
|
||||||
|
|
||||||
ResultLabel.Text =
|
ResultLabel.Text =
|
||||||
$"Ïîëó÷åíû ñëåäóþùèå äàííûå äëÿ ôàéëà\r\n{fileNameEdt.Text}\r\nÕýø ôàéëà:\r\n{fileHash}\r\nÒèï ôàéëà:\r\n{fileType}";
|
$"Ïîëó÷åíû ñëåäóþùèå äàííûå äëÿ ôàéëà\r\n{fileNameEdt.Text}\r\nÕýø ôàéëà:\r\n{fileHash}\r\nÒèï ôàéëà:\r\n{fileType}";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user