在查看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方法获取属性的元数据.此处和此处的链接显示了这样做的示例.
这些是分配给变量的属性。一个经典的用例是强制执行它们所应用的模型属性。
当与代码优先原则结合使用时,在应用程序将更改保存到数据库之前,会强制执行模型中这些属性中指定的验证规则,并避免不良数据进入数据库。
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)
| 归档时间: |
|
| 查看次数: |
11153 次 |
| 最近记录: |