Envoice.Conditions
1.0.0
See the version list below for details.
dotnet add package Envoice.Conditions --version 1.0.0
NuGet\Install-Package Envoice.Conditions -Version 1.0.0
<PackageReference Include="Envoice.Conditions" Version="1.0.0" />
paket add Envoice.Conditions --version 1.0.0
#r "nuget: Envoice.Conditions, 1.0.0"
// Install Envoice.Conditions as a Cake Addin #addin nuget:?package=Envoice.Conditions&version=1.0.0 // Install Envoice.Conditions as a Cake Tool #tool nuget:?package=Envoice.Conditions&version=1.0.0
Envoice
Conditions
Conditions is a dotnet 2.0 class library that helps developers write pre- and postcondition validations in a fluent manner. Writing these validations is easy and it improves the readability and maintainability of code.
Supported Platforms
- .NET 2.0
Installation
Installation is done via MyGet:
dotnet add package Envoice.Conditions --version 1.0.0 --source https://www.myget.org/F/envoice/api/v3/index.json
Usage
public ICollection GetData(Nullable<int> id, string xml, IEnumerable<int> col)
{
// Check all preconditions:
Condition.Requires(id, "id")
.IsNotNull() // throws ArgumentNullException on failure
.IsInRange(1, 999) // ArgumentOutOfRangeException on failure
.IsNotEqualTo(128); // throws ArgumentException on failure
Condition.Requires(xml, "xml")
.StartsWith("<data>") // throws ArgumentException on failure
.EndsWith("</data>") // throws ArgumentException on failure
.Evaluate(xml.Contains("abc") || xml.Contains("cba")); // arg ex
Condition.Requires(col, "col")
.IsNotNull() // throws ArgumentNullException on failure
.IsEmpty() // throws ArgumentException on failure
.Evaluate(c => c.Contains(id.Value) || c.Contains(0)); // arg ex
// Do some work
// Example: Call a method that should not return null
object result = BuildResults(xml, col);
// Check all postconditions:
Condition.Ensures(result, "result")
.IsOfType(typeof(ICollection)); // throws PostconditionException on failure
return (ICollection)result;
}
public static int[] Multiply(int[] left, int[] right)
{
Condition.Requires(left, "left").IsNotNull();
// You can add an optional description to each check
Condition.Requires(right, "right")
.IsNotNull()
.HasLength(left.Length, "left and right should have the same length");
// Do multiplication
}
A particular validation is executed immediately when it's method is called, and therefore all checks are executed in the order in which they are written:
C# 6
C# 6 compiler provides easier way for accessing extension methods. With using static Condition;
you have no longer to prefix Requried
and Ensures
methods with name of Condition
static class.
For example:
namespace Foo
{
using static Condition;
public class Bar
{
public void Buzz(object arg)
{
Required(arg).IsNotNull();
}
}
}
You can add C#6 features to your project by installing Microsoft.Net.Compilers nuget.
With thanks to
- <a href="http://www.cuttingedge.it/">S. van Deursen</a> who is the original author of "<a href="https://conditions.codeplex.com/">CuttingEdge.Conditions</a>" from which this project was forked from.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.