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.
<PackageVersion Include="AbandonedRickshaw.ThrowIf" Version="1.0.0" />
<PackageReference Include="AbandonedRickshaw.ThrowIf" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version 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.
#:package AbandonedRickshaw.ThrowIf@1.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AbandonedRickshaw.ThrowIf&version=1.0.0
#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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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.