当前位置: 首页 > 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.lryc.cn/news/622584.html

相关文章:

  • 【C#补全计划】Lambda表达式
  • C++面试题及详细答案100道( 31-40 )
  • HackMyVM-Uvalde
  • AI生成视频开源模型技术解析
  • uv - 基本使用
  • JavaScript学习第十章-第三部分(dom)
  • 【P40 6-3】OpenCV Python——图像融合(两张相同属性的图片按比例叠加),addWeighted()
  • 视觉语言模型(VLA)分类方法体系
  • GitHub 热榜项目 - 日榜(2025-08-16)
  • DeepSeek-R1-深度解析-通过强化学习激励大语言模型的推理能力
  • 高并发场景下如何避免重复支付
  • 【Nginx指南】从核心原理到生产实践
  • AI智能体实战开发课程介绍
  • ARC与eARC是什么?主要用在哪?
  • implement copy file content to clipboard on Windows
  • OpenCV 图像处理基础操作指南(二)
  • sqli-labs通关笔记-第52关 GET数值型order by堆叠注入(手工注入+脚本注入两种方法)
  • ComfyUI-3D-Pack:3D创作的AI神器
  • AI 搜索时代:引领变革,重塑您的 SEO 战略
  • Boost搜索引擎项目(详细思路版)
  • AI搜索引擎下的内容优化新范式:GEO的关键技术解析
  • ABM和强化学习-2015年全国大学生数学建模竞赛B题
  • 2025年生成式引擎优化(GEO)服务商技术能力评估报告
  • Linux怎么查看服务器开放和启用的端口
  • 论文学习24:Boundary-Sensitive Segmentation of SmallLiver Lesions
  • [Linux] Linux tar文档管理 系统间复制文档
  • Rust学习笔记(四)|结构体与枚举(面向对象、模式匹配)
  • 头文件包含和前置声明
  • [Linux] Linux网络管理
  • 跨域:浏览器有同源策略,但是为何 cdn 请求资源的时候不会有跨域限制?