YAGuard 2.0.0
dotnet add package YAGuard --version 2.0.0
NuGet\Install-Package YAGuard -Version 2.0.0
<PackageReference Include="YAGuard" Version="2.0.0" />
paket add YAGuard --version 2.0.0
#r "nuget: YAGuard, 2.0.0"
// Install YAGuard as a Cake Addin #addin nuget:?package=YAGuard&version=2.0.0 // Install YAGuard as a Cake Tool #tool nuget:?package=YAGuard&version=2.0.0
YAGuard
Yet Another Guard argument validation package. Provide the argument for validation, its name is automatically resolved in the resulting exception. Usage:
public void MyFunc(string myArg)
{
Guard.AgainstNull(myArg);
// or
Guard.AgainstNull( () => myArg );
// or
Guard.AgainstNull(myArg, "myArg");
// or
Guard.AgainstNull(myArg, nameof(myArg));
}
In case myArg is null, this will throw an ArgumentNullException with the correct argument name.
You can also use value of the argument immediately like this:
public void MyFunc(string myArg)
{
string validatedArg1 = Guard.AgainstNull(myArg);
// or
string validatedArg2 = Guard.AgainstNull( () => myArg );
// or
string validatedArg3 = Guard.AgainstNull(myArg, "myArg");
// or
string validatedArg4 = Guard.AgainstNull(myArg, nameof(myArg));
}
Examples
To validate method arguments:
public void MyMethod(string myArg)
{
Guard.AgainstNull(myArg); // Will throw ArgumentNullException when myArg is null.
Guard.AgainstNull(() => myArg); // Will throw ArgumentNullException when myArg is null.
Guard.AgainstNullOrEmptyString(myArg); // Will throw ArgumentException when myArg is null or empty.
Guard.AgainstLongString(myArg, 10); // Will throw ArgumentException when myArg is longer then 10 characters.
MyProperty = myArg;
...
}
Use intellisense for a full list of supported validation methods.
Limitations
All styles detect invalid parameter values correctly, but there are differences in the efficiency in resolving parameter names.
The expression style : Guard.AgainstNull(() => myArg);
reliably resolves the name of the parameter in most scenarios.
The simple style: Guard.AgainstNull(myArg)
works correctly when there's a single method parameter, or when the type of the guarded parameter is unique in the argument list.
In case you are validating anything other than a method parameter, use the expression style, as the simple style uses the method declaration to resolve the parameter name. In case there are two parameters of the same type, the parameter name in the exception thrown will contain both of their names. In such cases, use the expression style.
Release History
v2.0.0
Removed support for dotnet core 2.1 because of vulnerabilities there Added support for dotner 6, dotnet 7, dotnet 8, .Net Framework 4.8.1
v1.1.4
Added support for validating collection argument items against a set of accepted values.
Guard.AgainstUnsupportedCollectionItems(fruits, new string[] { "apples", "pears"});
v1.1.x
Added support for the expression style: Guard.Against...( () => myArg );
Added best effort parameter name resolution to the plain style validation.
v1.0.4
Retired the Assign class, changed Guard methods to return the argument value.
v1.0.x
Added support for the style: Guard.Against...(myArg);
which automatically resolves the name of the argument.
Removed support for the style: Guard.Against...(new { myArg });
v0.0.x
Implemented two styles:
Guard.Against...(myArg, argName);
Guard.Against...(new { myArg });
the second one to help avoid typing the name of the argument. But it didn't really help when compared to nameof(myArg).
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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 is compatible. 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 is compatible. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net452 is compatible. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 is compatible. |
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. |
-
.NETCoreApp 3.1
- No dependencies.
-
.NETFramework 4.5.2
- No dependencies.
-
.NETFramework 4.8.1
- No dependencies.
-
.NETStandard 2.0
- No dependencies.
-
net5.0
- No dependencies.
-
net6.0
- No dependencies.
-
net7.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on YAGuard:
Package | Downloads |
---|---|
B.MaskedTimers
A timer with a set of intervals to mask when the timer can fire. The timer will only fire within the specified intervals. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.0.0 | 216 | 6/24/2024 |
1.1.4 | 3,554 | 10/10/2023 |
1.1.3 | 4,643 | 3/5/2022 |
1.1.2 | 2,077 | 1/2/2021 |
1.1.1 | 328 | 12/29/2020 |
1.1.0 | 406 | 12/28/2020 |
1.0.4 | 341 | 12/27/2020 |
1.0.3 | 367 | 11/28/2020 |
1.0.2 | 364 | 11/28/2020 |
1.0.1 | 412 | 11/28/2020 |
1.0.0 | 432 | 11/28/2020 |
0.0.5 | 484 | 3/5/2020 |
0.0.4 | 433 | 2/5/2020 |
0.0.3 | 493 | 2/3/2020 |
0.0.2 | 555 | 2/2/2020 |
0.0.1 | 589 | 2/2/2020 |
0.0.0 | 461 | 2/2/2020 |
Added support for validating collection argument items against a set of accepted values.