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


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!


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