A simple package with guard clause extensions.
Branch: master
Clone or download

README.md

NuGetNuGet Build Status

NuGet: Ardalis.GuardClauses

Guard Clauses

A simple package with guard clause extensions.

Give a Star! ⭐️

If you like or are using this project to learn or start your solution, please give it a star. Thanks!

Usage

    public void ProcessOrder(Order order)
    {
    	Guard.Against.Null(order, nameof(order));

        // process order here
    }

Supported Guard Clauses

  • 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/enum input is outside a provided range)
  • Guard.Against.OutOfSQLDateRange (throws if DateTime input is outside the valid range of SQL Server DateTime values)
  • Guard.Against.Zero (throws if number input is zero)

Extending with your own Guard Clauses

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));
    }

References