文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C#笔记11:特性(Attribute)

C#笔记11:特性(Attribute)

时间:2010-09-11  来源:luminji

C#笔记11:特性(Attribute)

本章概要:

1:什么是特性 

2:特性的用途

3:自定义特性

4:使用Attribute的拦截机制

 

1:什么是特性

     特性提供功能强大的方法,用以将声明信息与代码(类型、方法、属性等)相关联。特性与程序实体关联后,即可在运行时使用名为“反射”的技术查询特性。

 

2:特性的用途

     以下列表包含特性的几个常见用途:

  • 在 Web 服务中,使用 WebMethod 特性来标记方法,以指示该方法应该可通过 SOAP 协议进行调用。有关更多信息,请参见 WebMethodAttribute

  • 描述当与本机代码进行交互操作时如何封送方法参数。有关更多信息,请参见 MarshalAsAttribute

  • 描述类、方法和接口的 COM 属性。

  • 使用 DllImportAttribute 类调用非托管代码。

  • 在标题、版本、说明或商标方面描述您的程序集。

  • 描述要持久性序列化类的哪些成员。

  • 描述如何映射类成员和 XML 节点以便进行 XML 序列化。

  • 描述方法的安全要求。

  • 指定用于强制安全性的特性。

  • 由实时 (JIT) 编译器控制优化,以便易于调试代码。

3:自定义特性

     通过定义一个特性类,可以创建您自己的自定义特性。该特性类直接或间接地从 Attribute 派生,有助于方便快捷地在元数据中标识特性定义。假设您要用编写类型的程序员的名字标记类型。可以定义一个自定义 Author 特性类:

[System.AttributeUsage(System.AttributeTargets.Class |
                       System.AttributeTargets.Struct)
]
public class Author : System.Attribute
{
    private string name;
    public double version;

    public Author(string name)
    {
        this.name = name;
        version = 1.0;
    }
}

      类名是特性的名称,即 Author。它由 System.Attribute 派生而来,因此是自定义特性类。构造函数的参数是自定义特性的定位参数。本示例中 name 是定位参数。任何公共的读写字段或属性都是命名参数。在本例中,version 是唯一的命名参数。请注意 AttributeUsage 特性的用法,它使得 Author 特性仅在类和 struct(在 Visual Basic 中是 Structure)声明中有效。

可以按如下所示使用此新特性:

[Author("P. Ackerman", version = 1.1)]
class SampleClass
{
    // P. Ackerman's code goes here...
}

4:使用Attribute的拦截机制

    这是一个高级特性,在本处不打算详述。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载