forked from ddrilling/AsbCloudServer
Сделал небольшую доработку по исключениям. 1. Создал новое исключение, которое позволяет указывать сразу несколько невалидных параметров. 2. Поправил middleware, сделал обобщённый класс, который преобразует исключение.
47 lines
1.2 KiB
C#
47 lines
1.2 KiB
C#
using System;
|
|
using AsbCloudApp.Exceptions.Interfaces;
|
|
|
|
namespace AsbCloudApp.Exceptions;
|
|
|
|
/// <summary>
|
|
/// Èñêëþ÷åíèå äëÿ íåñêîëüêèõ íåâàëèäíûõ àãðóìåíòîâ
|
|
/// </summary>
|
|
public class ArgumentsInvalidException : Exception,
|
|
IHasValidation
|
|
{
|
|
/// <summary>
|
|
/// Èìåíà ïàðàìåòðîâ
|
|
/// </summary>
|
|
public string[] ParamNames { get; } = Array.Empty<string>();
|
|
|
|
/// <summary>
|
|
/// Êîíòñðóêòîð èñêëþ÷åíèÿ
|
|
/// </summary>
|
|
/// <param name="message"></param>
|
|
/// <param name="paramNames"></param>
|
|
public ArgumentsInvalidException(string message,
|
|
string[] paramNames)
|
|
{
|
|
ParamNames = paramNames;
|
|
}
|
|
|
|
/// <summary>
|
|
/// ïðåîáðàçîâàíèå â îáúåêò âàëèäàöèè
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public object ToValidationErrorObject()
|
|
=> MakeValidationError(ParamNames, Message);
|
|
|
|
/// <summary>
|
|
/// ôàáðèêà îáúåêòà âàëèäàöèè
|
|
/// </summary>
|
|
/// <param name="paramName"></param>
|
|
/// <param name="errors"></param>
|
|
/// <returns></returns>
|
|
public static object MakeValidationError(string[] paramNames, params string[] errors)
|
|
=> new
|
|
{
|
|
names = paramNames,
|
|
errors,
|
|
};
|
|
} |