特性

本文介绍了C#中的特性(Attribute)及其应用目标,包括assembly、module、field、event、method、param、property、type和return。特性可以提供附加在类型上的扩展信息,可以通过反射技术来检索和验证调用方是否符合特定要求。文中给出了一个TypeInfoAttribute特性的定义和使用示例,展示了如何为类型、方法返回值等应用特性并进行反射读取。
摘要由CSDN通过智能技术生成

默认情况下特性是应用于跟随其后的对象的,因此在许多时候,在使用特性时都会省略表示特性目标的关键字。以下是特性应用于目标对象时的完整格式。

[<目标>:<特性列表>]

特性目标关键字及相关说明:

  • assembly —— 表示特性将应用于当前程序集,通常放在程序集中命名空间或所有类型定义之前。
  • module —— 用于当前模块,该特性用得比较少。
  • field —— 该特性用于字段,如果特性后紧跟着字段的声明代码,则该关键字可以省略。
  • event —— 特性用于事件,默认情况下也可以省略。
  • method —— 该特性用于方法,也可以用于属性中的get和set访问器,该特性用得较少。
  • param —— 表示特性用于方法中的参数或属性定义中的set访问器中的参数(value),默认情况下该关键字也可以省略。
  • property —— 指示特性用于属性,默认情况下也可以省略。
  • type —— 表示特性用于类型,如类、结构、委托、枚举等。默认情况下也可以省略。
  • return —— 特性用于方法的返回值,或者属性中get访问器的返回值。由于无法在返回值前面附加特性声明,所以,若要为返回值应用特性,retrun关键字不能省略。

例如,若要为方法的返回值应用特性,应如下:

        [return:MarshalAs(UnmanagedType.SysInt)]
        public int Compute()
        {
   
            return 0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值