Следующий код в C # вызовет исключение InvalidOperationException, поскольку ему не разрешен доступ к значению, если оно не установлено.
int? a = null;
Console.Writeline(a.Value);
У меня есть следующий код в AspNet.Core:
public class Request
{
[Range(10, 20]
public int? Field1 {get; set;}
[Range(10, 20]
public MyStruct Field2 {get; set;}
}
public struct MyStruct
{
public int Value => throw new Exception();
}
Когда происходит проверка модели, фреймворк просто выдает исключение, потому что пытается прочитать все свойства MyStruct
и, очевидно, не может прочитать Value
. Но если у меня есть только пустое поле, проверка работает просто отлично, даже если Value
также выдает исключение.
Есть ли какая-то магия, которая просто жестко запрограммирована, чтобы не делать это для Nullable, или есть какой-то способ, которым яможет иметь такое же поведение в моем коде? Т.е. я хочу, чтобы проверка не вызвала исключение для моего класса.
У меня есть подозрение, что это либо жестко закодированная проверка, либо какой-то синтаксический сахар, который позволяет Nullable
struct присваивать и сравнивать со значением null. .