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

use*_*142 19 .net c#

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

    [XmlIgnore, Bindable(false)]
    public virtual FieldBase Field {get;set;}
Run Code Online (Sandbox Code Playgroud)

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

Gra*_*mas 23

这些是属性,它们可以应用于代码库的元素,并且这样做将元数据应用于该事物 - 如描述性声明.这些东西可以有多个属性..NET框架公开了一堆"内置"属性,但您可以定义自己的属性.

作为属性的类型实际上是使用完全限定名称定义的SuchAThingAttribute,而在应用时,您只需要指定名称减去Attribute哪个SuchAThing.它们必须来自System.Attribute(至少是顺从的).

属性可以具有"设置",也就是说,您可以指定(在编写自己的属性时)属性适用的元素类型,以及元素是否可以具有多种此类属性,依此类推.

稍后可以使用Reflection and GetCustomAttribute-like方法获取属性的元数据.此处此处的链接显示了这样做的示例.


Ser*_*nov 9

这些是属性.请查看属性(C#和Visual Basic).


Dea*_*n P 6

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

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

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; }
}
Run Code Online (Sandbox Code Playgroud)