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

时间:2012-02-02 09:20:56

标签: c# .net

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

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

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

4 个答案:

答案 0 :(得分:23)

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

属性类型实际上是使用完全限定名称SuchAThingAttribute定义的,而在应用时,您只需指定名称减去AttributeSuchAThing。它们必须来自System.Attribute(至少要符合要求)。

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

以后可以使用ReflectionGetCustomAttribute类方法获取属性的元数据。链接herehere显示了这样做的示例。

答案 1 :(得分:9)

这些是属性。 请查看Attributes (C# and Visual Basic)

答案 2 :(得分:4)

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

答案 3 :(得分:2)

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

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

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; }
}
相关问题