You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
4.8 KiB
163 lines
4.8 KiB
using JetBrains.Annotations;
|
|
using System.Diagnostics;
|
|
|
|
namespace Tiobon.Core.Common;
|
|
|
|
[DebuggerStepThrough]
|
|
public static class Check
|
|
{
|
|
[ContractAnnotation("value:null => halt")]
|
|
public static T NotNull<T>(
|
|
T value,
|
|
[InvokerParameterName][NotNull] string parameterName)
|
|
{
|
|
if (value == null)
|
|
{
|
|
throw new ArgumentNullException(parameterName);
|
|
}
|
|
|
|
return value;
|
|
}
|
|
|
|
[ContractAnnotation("value:null => halt")]
|
|
public static T NotNull<T>(
|
|
T value,
|
|
[InvokerParameterName][NotNull] string parameterName,
|
|
string message)
|
|
{
|
|
if (value == null)
|
|
{
|
|
throw new ArgumentNullException(parameterName, message);
|
|
}
|
|
|
|
return value;
|
|
}
|
|
|
|
[ContractAnnotation("value:null => halt")]
|
|
public static string NotNull(
|
|
string value,
|
|
[InvokerParameterName][NotNull] string parameterName,
|
|
int maxLength = int.MaxValue,
|
|
int minLength = 0)
|
|
{
|
|
if (value == null)
|
|
{
|
|
throw new ArgumentException($"{parameterName} can not be null!", parameterName);
|
|
}
|
|
|
|
if (value.Length > maxLength)
|
|
{
|
|
throw new ArgumentException($"{parameterName} length must be equal to or lower than {maxLength}!", parameterName);
|
|
}
|
|
|
|
if (minLength > 0 && value.Length < minLength)
|
|
{
|
|
throw new ArgumentException($"{parameterName} length must be equal to or bigger than {minLength}!", parameterName);
|
|
}
|
|
|
|
return value;
|
|
}
|
|
|
|
[ContractAnnotation("value:null => halt")]
|
|
public static string NotNullOrWhiteSpace(
|
|
string value,
|
|
[InvokerParameterName][NotNull] string parameterName,
|
|
int maxLength = int.MaxValue,
|
|
int minLength = 0)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(value))
|
|
{
|
|
throw new ArgumentException($"{parameterName} can not be null, empty or white space!", parameterName);
|
|
}
|
|
|
|
if (value.Length > maxLength)
|
|
{
|
|
throw new ArgumentException($"{parameterName} length must be equal to or lower than {maxLength}!", parameterName);
|
|
}
|
|
|
|
if (minLength > 0 && value.Length < minLength)
|
|
{
|
|
throw new ArgumentException($"{parameterName} length must be equal to or bigger than {minLength}!", parameterName);
|
|
}
|
|
|
|
return value;
|
|
}
|
|
|
|
[ContractAnnotation("value:null => halt")]
|
|
public static string NotNullOrEmpty(
|
|
string value,
|
|
[InvokerParameterName][NotNull] string parameterName,
|
|
int maxLength = int.MaxValue,
|
|
int minLength = 0)
|
|
{
|
|
if (value.IsNullOrEmpty())
|
|
{
|
|
throw new ArgumentException($"{parameterName} can not be null or empty!", parameterName);
|
|
}
|
|
|
|
if (value.Length > maxLength)
|
|
{
|
|
throw new ArgumentException($"{parameterName} length must be equal to or lower than {maxLength}!", parameterName);
|
|
}
|
|
|
|
if (minLength > 0 && value.Length < minLength)
|
|
{
|
|
throw new ArgumentException($"{parameterName} length must be equal to or bigger than {minLength}!", parameterName);
|
|
}
|
|
|
|
return value;
|
|
}
|
|
|
|
[ContractAnnotation("value:null => halt")]
|
|
public static ICollection<T> NotNullOrEmpty<T>(ICollection<T> value, [InvokerParameterName][NotNull] string parameterName)
|
|
{
|
|
if (value == null || value.Count <= 0)
|
|
{
|
|
throw new ArgumentException(parameterName + " can not be null or empty!", parameterName);
|
|
}
|
|
|
|
return value;
|
|
}
|
|
|
|
[ContractAnnotation("type:null => halt")]
|
|
public static Type AssignableTo<TBaseType>(
|
|
Type type,
|
|
[InvokerParameterName][NotNull] string parameterName)
|
|
{
|
|
NotNull(type, parameterName);
|
|
|
|
if (!type.IsAssignableTo<TBaseType>())
|
|
{
|
|
throw new ArgumentException($"{parameterName} (type of {type.AssemblyQualifiedName}) should be assignable to the {typeof(TBaseType).GetFullNameWithAssemblyName()}!");
|
|
}
|
|
|
|
return type;
|
|
}
|
|
|
|
public static string Length(
|
|
[CanBeNull] string value,
|
|
[InvokerParameterName][NotNull] string parameterName,
|
|
int maxLength,
|
|
int minLength = 0)
|
|
{
|
|
if (minLength > 0)
|
|
{
|
|
if (string.IsNullOrEmpty(value))
|
|
{
|
|
throw new ArgumentException(parameterName + " can not be null or empty!", parameterName);
|
|
}
|
|
|
|
if (value.Length < minLength)
|
|
{
|
|
throw new ArgumentException($"{parameterName} length must be equal to or bigger than {minLength}!", parameterName);
|
|
}
|
|
}
|
|
|
|
if (value != null && value.Length > maxLength)
|
|
{
|
|
throw new ArgumentException($"{parameterName} length must be equal to or lower than {maxLength}!", parameterName);
|
|
}
|
|
|
|
return value;
|
|
}
|
|
}
|
|
|