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

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.xdnf.cn/news/17898.html

相关文章:

  • 解锁JavaScript性能优化:从理论到实战
  • C#WPF实战出真汁09--【消费开单】--选择菜品
  • 一次性能排查引发的Spring MVC深度思考
  • Element Plus 中 el-input 限制为数值输入的方法
  • Docker自定义镜像
  • 自动驾驶中的传感器技术24.1——Camera(16)
  • 算法训练营day53 图论④ 110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长
  • Conda创建py3.10环境(股票),并且安装程序包的命令
  • 元宇宙教育:打破时空限制的学习革命
  • 汽车大灯ABD算法介绍
  • SpringAI中的模块化链式Advisor调用(源码学习)
  • B3865 [GESP202309 二级] 小杨的 X 字矩阵(举一反三)
  • Linux 多线程:线程回收策略 线程间通信(互斥锁详解)
  • linux下程序运行一段时间无端崩溃/被杀死,或者内存占用一直增大。linux的坑
  • Docker in Test:用一次性的真实环境,终结“测试永远跑不通”魔咒
  • 集成运算放大器(反向比例,同相比例)
  • C++实战
  • 静态库和动态库
  • 【leetcode】5 最长回文子串 动态规划法
  • Protues使用说明及Protues与Keil联合仿真实现点亮小灯和流水灯
  • 【Docker项目实战】使用Docker部署Notepad轻量级记事本
  • 【基础-判断】HarmonyOS提供了基础的应用加固安全能力,包括混淆、加密和代码签名能力
  • 数据结构 实现循环队列的三种方法
  • 如何在 MacOS 上安装 SQL Server
  • 搭建ktg-mes
  • 新手向:Python列表、元组、集合和字典的用法对比
  • MySQL的三大范式:
  • AI云电脑盒子技术分析——从“盒子”到“算力云边缘节点”的跃迁
  • 实现Android图片手势缩放功能的完整自定义View方案,结合了多种手势交互功能
  • Vue 3.5重磅更新:响应式Props解构,让组件开发更简洁高效