属性声明上方的方括号语法

本文关键字:方括号 语法 声明 属性 | 更新日期: 2023-09-27 18:22:25

在查看C#代码(使用.NET 4.0框架)时,我一直看到以下语法:

    [XmlIgnore, Bindable(false)]
    public virtual FieldBase Field {get;set;}

属性标题上方的方括号的用途是什么?

属性声明上方的方括号语法

这些都是属性,它们可以应用于代码库的元素,并在这样做的过程中将元数据应用于类似描述性声明的东西。这些东西可以有多个属性。.NET框架公开了一堆"内置"属性,但是您可以定义自己的属性。

作为属性的类型实际上是用完全限定的名称SuchAThingAttribute定义的,而在应用时,您只需要指定名称减去Attribute就可以变成SuchAThing。并且它们必须派生自System.Attribute(至少要符合)。

一个属性可以有"设置",也就是说,你可以指定(在编写自己的属性时)该属性适用于哪些类型的元素,以及一个元素是否可以有多个这种类型的属性,等等

属性的元数据可以稍后使用Reflection和类似GetCustomAttribute的方法获得。此处和此处的链接显示了这样做的示例。

这些都是属性。请看一下属性(C#和Visual Basic)。

这些是分配给变量的属性。一个经典的用例是强制应用它们的模型属性

当与代码优先原则结合使用时,在应用程序将更改保存到数据库中并避免坏数据进入数据库之前,将强制执行模型中这些属性中指定的验证规则。

public class Person
{
    //We cannot have a digit as part of a Person's name, unless ofcourse
    //you are Elon Musks child
    [RegularExpression(@"[^0-9]*")]
    public string Name{ get; set; }
}

您看到的是一个属性。方括号是指定属性应用于给定成员(在本例中为属性访问器)所需的语法,但属性也可以应用于类等。