-
-
Notifications
You must be signed in to change notification settings - Fork 280
Closed
Description
The current 3.2.0 Nuget Release. Don't have any support for Nullable
classes/structs to OutOfRange
private static void TestStruct(int x)
{
Guard.Against.OutOfRange(x, nameof(x), -10, 10); // OK
Guard.Against.OutOfRange<int>(x, nameof(x), -10, 10); // Compiler Error
}
private static void TestNullableStruct(int? x)
{
Guard.Against.OutOfRange(x, nameof(x), -10, 10); // Compiler Error
Guard.Against.OutOfRange<int?>(x, nameof(x), -10, 10); // Compiler Error
}
private static void TestClass(Version x)
{
var firstVersion = new Version(1, 0);
var cuurentVersion = new Version(10, 0);
Guard.Against.OutOfRange(x, nameof(x), firstVersion, cuurentVersion); // Compiler Error
Guard.Against.OutOfRange<Version>(x, nameof(x), firstVersion, cuurentVersion); // Compiler Error
}
private static void TestClassWithNull(Version x)
{
var firstVersion = new Version(1, 0);
var cuurentVersion = new Version(10, 0);
Guard.Against.OutOfRange(null, nameof(x), firstVersion, cuurentVersion); // Compiler Error
Guard.Against.OutOfRange<Version>(null, nameof(x), firstVersion, cuurentVersion); // Compiler Error
}
The current main
branch code-base added some support to classes to OutOfRange
, but not for Nullable
.
private static void TestStruct(int x)
{
Guard.Against.OutOfRange(x, nameof(x), -10, 10); // OK
Guard.Against.OutOfRange<int>(x, nameof(x), -10, 10); // OK
}
private static void TestNullableStruct(int? x)
{
Guard.Against.OutOfRange(x, nameof(x), -10, 10); // Compiler Error
Guard.Against.OutOfRange<int?>(x, nameof(x), -10, 10); // Compiler Error
}
private static void TestClass(Version x)
{
var firstVersion = new Version(1, 0);
var cuurentVersion = new Version(10, 0);
Guard.Against.OutOfRange(x, nameof(x), firstVersion, cuurentVersion); // Compilation OK, but NullReferenceException in Runtime when x is null
Guard.Against.OutOfRange<Version>(x, nameof(x), firstVersion, cuurentVersion); // Compilation OK, but NullReferenceException in Runtime when x is null
}
private static void TestClassWithNull(Version x)
{
var firstVersion = new Version(1, 0);
var cuurentVersion = new Version(10, 0);
Guard.Against.OutOfRange((Version)null, nameof(x), firstVersion, cuurentVersion); // Compilation OK, but NullReferenceException in Runtime when x is null
Guard.Against.OutOfRange<Version>((Version)null, nameof(x), firstVersion, cuurentVersion); // Compilation OK, but NullReferenceException in Runtime when x is null
Guard.Against.OutOfRange(null, nameof(x), firstVersion, cuurentVersion); // Compiler Error
Guard.Against.OutOfRange<Version>(null, nameof(x), firstVersion, cuurentVersion); // Compiler Error
}
GuardClauses could add a NullOrOutOfRange
clause to add support to Nullable classes/structs. And checking the input
parameter fo null values, thowing ArgumentNullException
insted of a NullReferenceException
.
See this dotnetfiddle https://dotnetfiddle.net/nbXa8U
Kind Related: #139
Metadata
Metadata
Assignees
Labels
No labels