当前位置: 首页 > news >正文

C# 反射和特性(关于应用特性的更多内容)

关于应用特性的更多内容

至此,我们演示了特性的简单使用,都是为方法应用单个特性。本节将讲述特性的其他使
用方式。

多个特性

可以为单个结构应用多个特性。

  • 多个特性可以使用下面任何一种格式列出。
    • 独立的特性片段一个接一个。通常,它们彼此叠加,位于不同的行中。
    • 单个特性片段,特性之间使用逗号分隔。
  • 可以以任何次序列出特性。
    例如,下面的两个代码片段显示了应用多个特性的两种方式。两个片段的代码是等价的。
[Serializable]
[MyAttribute("Simple class","Version 3.57")][MyAttribute("Simple class","Version 3.57"),Serializable]

其他类型的目标

除了类,还可以将特性应用到诸如字段和属性等其他程序结构。以下的声明显示了字段上的
特性以及方法上的多个特性:

[MyAttribute("Holds a value","Version 3.2")] //字段上的特性
public int MyField;[Obsolete]
[MyAttribute("Prints out a message","Version 3.6")] //方法上的特性
public void PrintOut()
{...
}

还可以显式地标注特性,从而将它应用到特殊的目标结构。要使用显式目标说明符,在特性
片段的开始处放置目标类型,后面跟冒号。例如,如下的代码用特性装饰方法,并且还把特性应
用到返回值上。
如表25-3所列,C#语言定义了10个标准的特性目标。大多数目标名是自解释的,而tyPe覆盖
了类、结构、委托、枚举和接口。typevar目标名称为使用泛型的结构指定类型参数。

---------------------------- 
event        | field 
method       | param 
property     | return 
type         | typevar 
assembly     | module 
---------------------------- 

全局特性

还可以通过使用assembly和module目标名称来使用显式目标说明符把特性设置在程序集或
模块级别。(程序集和模块在第22章中解释过。)有关程序集级别的特性的要点如下:

  • 程序集级别的特性必须放置在任何命名空间之外,并且通常放置在AssemblyInfo.cs文件中;
  • Assemblylnfo.cs文件通常包含有关公司、产品以及版权信息的元数据。
    如下的代码行摘自Assemblylnfo.cs文件:
[assembly:AssemblyTitle("SuperWidget")]
[assembly:AssemblyDescription("Implements the SuperWidget product.")]
[assembly:AssemblyConfiguration("")]
[assembly:AssemblyCompany("McArthur Widget,Inc.")]
[assembly:AssemblyProduct("Super Widget Deluxe")]
[assembly:AssemblyCopyright("Copyright @ McArthur Widgets 2012)]
[assembly:AssemblyTradmark("")]
[assembly:AssemblyCulture("")]
http://www.dtcms.com/a/335104.html

相关文章:

  • 022 基础 IO —— 文件
  • 服务器硬件电路设计之I2C问答(七):解析 I2C 通信 “卡壳” 难题:从设备无响应与跨电压兼容之道
  • Apache Hudi:数据湖的实时革命
  • 【每日一题】Day5
  • 一键检测接口是否存活:用 Python/Shell 写个轻量级监控脚本
  • 后量子密码算法ML-KEM介绍及开源代码实现
  • 数据结构:二叉平衡树
  • ROS move_base 混合功能导航 RealSense D435i + 3D 点云地图 + 楼层切换 + 路径录制 + 路径规划
  • 微服务的编程测评系统12-xxl-job-历史竞赛-竞赛报名
  • C++ 力扣 1658.将 x 减到 0 的最小操作数 题解 优选算法 滑动窗口 (同向双指针)优化 每日一题 详细题解
  • 免费万能电子书格式转换器!Neat Converter支持 ePub、Azw3、Mobi、Doc、PDF、TXT 文件的相互转换。
  • 两个简单的设计模式的例子
  • FP16(半精度)和FP32(单精度)
  • CentOS7安装使用FTP服务
  • 产品设计.原型设计
  • TexStudio中的Latex,PDFLatex,XeLatex和LuaLatex的区别
  • vue优化有哪些手段?
  • ubuntu网络共享
  • 深度解析和鲸社区热门项目:电商双 11 美妆数据分析的细节与价值
  • ubuntu远程桌面很卡怎么解决?
  • [Linux] Linux系统负载监控 Linux服务管理
  • Java Stream sort算子实现:SortedOps
  • 网络层(1)
  • DeepResearch开源与闭源方案对比
  • autofit.js: 自动调整HTML元素大小的JavaScript库
  • 小智-ESP32的MQTT协议
  • linux设备驱动之字符设备驱动
  • Python-Pandas基础
  • 主从复制+哨兵
  • 移动互联网发展战略