public static void ThrowIf<T>(
T argument,
bool condition,
Func<T, string?>? getMessageFunc,
[InvokerParameterNameAttribute] string? paramName = null
)
Public Shared Sub ThrowIf(Of T) (
argument As T,
condition As Boolean,
getMessageFunc As Func(Of T, String),
<InvokerParameterNameAttribute> Optional paramName As String = Nothing
)
public:
generic<typename T>
static void ThrowIf(
T argument,
bool condition,
Func<T, String^>^ getMessageFunc,
[InvokerParameterNameAttribute] String^ paramName = nullptr
)
static member ThrowIf :
argument : 'T *
condition : bool *
getMessageFunc : Func<'T, string> *
[<InvokerParameterNameAttribute>] ?paramName : string
(* Defaults:
let _paramName = defaultArg paramName null
*)
-> unit
Функция, получающая значение аргумента argument и возвращающая сообщение об ошибке,
к которому дописывается имя аргумента и строка "Reason: ",
или null/Empty, если сообщение определяется автоматически.
Если параметр равен null, то это аналогично функции, возвращающей null.
Рекомендуется функцию всегда объявлять как static x => ..., чтобы не приводить к созданию замыкания,
даже если condition равен false.
При более сложном формировании сообщения рекомендуется переписать проверку как if и выбрасывать исключение внутри.
// throw if arg < 0
ThrowIf(arg, arg < 0, static x => $"Can't set value to {x}");
ArgumentOutOfRangeException | Значение condition равно false. |