C# [Required()] 注释在应该抛出异常时不会抛出异常

S I*_*zik 5 .net c# attributes annotations data-annotations

我在一个简单类中的属性上方使用 [Required()]:

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

    public int Salary { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在 Main() 中,我创建了该类的一个实例,但没有设置属性:

static void Main(string[] args)
{
    A a = new A();
}
Run Code Online (Sandbox Code Playgroud)

我预计会得到一个异常,因为我没有为 Str 属性设置任何值,但我没有得到任何值。我是否错过了[必填]的目的?

can*_*on7 3

我是否错过了[必填]的目的?

非常如此。让我们阅读文档

RequiredAttribute属性指定当验证表单上的字段时,该字段必须包含一个值

因此,我们专门讨论验证:它是System.ComponentModel.DataAnnotations命名空间内各种类的一部分,主要与验证有关。

主要是查看Validation类,它允许您根据赋予对象的属性来验证对象的属性。此基础结构用于各种地方,例如 ASP.NET 或 EF。