NuGet: Ardalis.GuardClauses
A simple package with guard clause extensions.
If you like or are using this project to learn or start your solution, please give it a star. Thanks!
public void ProcessOrder(Order order)
{
Guard.Against.Null(order, nameof(order));
// process order here
}
- Guard.Against.Null (throws if input is null)
- Guard.Against.NullOrEmpty (throws if string or array input is null or empty)
- Guard.Against.NullOrWhiteSpace (throws if string input is null, empty or whitespace)
- Guard.Against.OutOfRange (throws if integer/DateTime input is outside a provided range)
- Guard.Against.OutOfSQLDateRange (throws if DateTime input is outside the valid range of SQL Server DateTime values)
To extend your own guards, you can do the following:
// Using the same namespace will make sure your code picks up your
// extensions no matter where they are in your codebase.
namespace Ardalis.GuardClauses
{
public static class FooGuard
{
public static void Foo(this IGuardClause guardClause, string input, string parameterName)
{
if (input?.ToLower() == "foo")
throw new ArgumentException("Should not have been foo!", parameterName);
}
}
}
// Usage
public void SomeMethod(string something)
{
Guard.Against.Foo(something, nameof(something));
}