摘要

特征(Attribute)是用于在运行时传递法式中各类元素(好比类、办法、构造、列举、组件等)的行为信息的声明性标签。您能够通过利用特征向法式添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。

特征(Attribute)用于添加元数据,如编译器指令和正文、描述、办法、类等其他信息。.Net 框架供给了两品种型的特征:_预定义_特征和_自定义_特征。

注释

预定义特征

.Net 框架供给了三种预定义特征:

AttributeUsageConditionalObsolete

AttributeUsage

预定义特征 AttributeUsage 描述了若何利用一个自定义特征类。它规定了特征可应用到的项目标类型。

参数 validon 规定特征可被放置的语言元素。它是列举器 AttributeTargets 的值的组合。默认值是 AttributeTargets.All。参数 allowmultiple(可选的)为该特征的 AllowMultiple 属性(PRoPErty)供给一个布尔值。若是为 true,则该特征是多用的。默认值是 false(单用的)。参数 inherited(可选的)为该特征的 Inherited 属性(property)供给一个布尔值。若是为 true,则该特征可被派生类继承。默认值是 false(不被继承)。

AttributeUsage

[AttributeUsage(AttributeTargets.Class)]public class UserAttribute : Attribute{ public UserAttribute() { Console.WriteLine("UserAttribute..."); }}97.C# 特性 Attribute  第1张

Conditional

那个预定义特征标识表记标帜了一个前提办法,其施行依赖于指定的预处置标识符。

它会引起办法挪用的前提编译,取决于指定的值,好比 Debug 或 Trace。例如,当调试代码时显示变量的值。

private void btnInit_Click(object sender, EventArgs e){ Show();}[Conditional("DEBUG")]private static void Show(){ MessageBox.Show("信息");}97.C# 特性 Attribute  第2张

在Release下,点击是不会挪用Show(),但在Debug下会挪用

97.C# 特性 Attribute  第3张

Obsolete

那个预定义特征标识表记标帜了不该被利用的法式实体。它能够让您通知编译器丢弃某个特定的目的元素。例如,当一个新办法被用在一个类中,但是您仍然想要连结类中的旧办法,您能够通过显示一个应该利用新办法,而不是旧办法的动静,来把它标识表记标帜为 obsolete(过时的)。

参数 message,是一个字符串,描述项目为什么过时的原因以及该替代利用什么。参数 iserror,是一个布尔值。若是该值为 true,编译器应把该项目标利用当做一个错误。默认值是 false(编译器生成一个警告)。private void btnInit_Click(object sender, EventArgs e){ Show();}[Obsolete("那是一个旧办法,将来会打消的,请用新的ShowMe")]private static void Show(){ MessageBox.Show("Show");}private void ShowMe(){ MessageBox.Show("ShowMe");}97.C# 特性 Attribute  第4张