AbandonedRickshaw.ThrowIf
1.0.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package AbandonedRickshaw.ThrowIf --version 1.0.0
NuGet\Install-Package AbandonedRickshaw.ThrowIf -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AbandonedRickshaw.ThrowIf" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AbandonedRickshaw.ThrowIf --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: AbandonedRickshaw.ThrowIf, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install AbandonedRickshaw.ThrowIf as a Cake Addin #addin nuget:?package=AbandonedRickshaw.ThrowIf&version=1.0.0 // Install AbandonedRickshaw.ThrowIf as a Cake Tool #tool nuget:?package=AbandonedRickshaw.ThrowIf&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
ThrowIf
A set of basic, fluent validation extensions. Each is set up to to throw an appropriate error (or a custom one) on fail condition, or simply return the passed value on success, allowing for fluent syntax.
- Works with value, reference, nullable variables
- Can be chained (fluent) for multiple tests or "on the fly" testing.
Basic usage
Generally each extension takes the following:
- The argument to test.
- optional parameters to test against (min and max values for range, for instance).
- optional name of the variable to be used when throwing ArgumentException.
- optional exception to throw if test fails, in case ArgumentException won't cut it.
Examples
// sets a variable if within range, otherwise throws an ArgumentOutOfRangeException. Works for any IComparable
int test = 11;
var result = test.ThrowIfOutOfRange(1, 10);
var test = 'd';
var result = test.ThrowIfOutOfRange('a', 'c');
// throws if null or default. Works for reference or value types, nullables as well
string test = default!;
string result = test.ThrowIfNullOrDefault(new Exception("Invalid!"));
string? test = default;
string? result = test.ThrowIfNullOrDefault(new Exception("Invalid!"));
// custom testing via func
var testString = "The quick brown fox jumped over the lazy dog.";
var resultChar = testString.ThrowIf(x => x.Contains("dog"), nameof(testString));
var testString = "The quick brown fox jumped over the lazy dog.";
var resultChar = testString.ThrowIfNot(x => x.Contains("cat"), nameof(testString));
// fluent use
string testString = "I am a lazy dog.";
string illegalChars = @" ./\{}";
var validPassword = testString
.ThrowIfNullOrWhitespace(nameof(testString))
.ThrowIf(x => x.IndexOfAny(illegalChars.ToCharArray()) > 0, new ArgumentException($"Contains illegal characters: {illegalChars}", nameof(testString)))
.ThrowIfNot(x => x.Length > 5, new ArgumentException("Is less than 5 characters.", nameof(testString)))
.ThrowIfNot(x => x.Any(y => char.IsUpper(y)), new ArgumentException("Does not contain an upper-case letter."))
.ThrowIfNot(x => x.Any(y => char.IsLower(y)), new ArgumentException("Does not contain a lower-case letter."))
.ThrowIfNot(x => x.Any(y => char.IsNumber(y)), new ArgumentException("Does not contain a number."));
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 | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- 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.