C# [Обязательный ()] аннотация не выдает исключение, когда оно должно - PullRequest
1 голос
/ 21 марта 2020

Я использую [Required ()] над свойством в простом классе:

public class A
{
    [Required()]
    public string Str { get; set; }

    public int Salary { get; set; }
}

В Main () я создаю экземпляр класса, БЕЗ установки свойства:

static void Main(string[] args)
{
    A a = new A();
}

Я ожидал получить исключение, потому что я не установил никакого значения для свойства Str, но я не получил никакого. Я пропустил цель [Требуется]?

Ответы [ 2 ]

1 голос
/ 21 марта 2020

Я пропустил цель [Требуется]?

Очень сильно. Давайте прочитаем документы :

Атрибут RequiredAttribute указывает, что при проверке поля в форме поле должно содержать значение

Итак, речь идет именно о проверке: это часть различных классов внутри пространства имен System.ComponentModel.DataAnnotations, которые в основном связаны с валидацией.

В принципе, посмотрите на Validation класс, который позволяет вам проверять свойства объекта в соответствии с атрибутами, которые вы им наделили. Эта инфраструктура используется в различных местах, таких как ASP. NET или EF.

1 голос
/ 21 марта 2020

Атрибут Required предназначен для проверки (например, в ASP. NET), а не для выдачи исключений времени выполнения.

...