属性声明上方的方括号语法
本文关键字:方括号 语法 声明 属性 | 更新日期: 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; }
}
您看到的是一个属性。方括号是指定属性应用于给定成员(在本例中为属性访问器)所需的语法,但属性也可以应用于类等。