.NET(C#):获取方法返回值的自定义特性(Attribute)

C#- Attribute(特性) C# 的Attribute(特性)用法预定义的特性可以用来为代码添加元数据和指示编译器和运行时执行特定的操作。同时可以增加代码的功能和可读性。[Serializable] 特性:用于标记一个类或结构体可序列化,并可以在网络上传输或保存到磁盘上。// ...[Obsolete] 特性:用于标记一个方法、属性或类已经过时,并提供相应的替代方案或建议。下面设置为true是启动报错。默认为false。// ...[Conditional] 特性:用于指定一个方法只有在满足特定条件编译指令时才会被编译。 阅读详情

来自:http://www.cnblogs.com/mgen/archive/2011/11/02/2233374.html

.NET中特性的索取就是围绕着ICustomAttributeProvider接口(System.Reflection命名空间内),而MethodInfo类的ReturnTypeCustomAttributes属性直接返回方法返回值的ICustomAttributeProvider接口对象。同时MethodBase的ReturnParameter属性返回方法返回值信息(ParameterInfo),而ParameterInfo也是继承ICustomAttributeProvider的,所以这两个属性都可以得到方法返回值的特性。注意基类MethodBase没有相应属性,由于ConstructorInfo(代表构造函数信息)没有返回值。

 

代码:

using System;

using System.Reflection;

 

namespace Mgen

{

    [AttributeUsage(AttributeTargets.ReturnValue)]

    class MyAttr : Attribute

    {

        public int Data { get; set; }

    }

 

    class Program

    {

        static void Main(string[] args)

        {

            var method = typeof(Program).GetMethod("doo");

            test(method.ReturnTypeCustomAttributes);

            test(method.ReturnParameter);

 

        }

 

        static void test(ICustomAttributeProvider customAttrProvider)

        {

            if (customAttrProvider.IsDefined(typeof(MyAttr), false))

            {

                var att = (MyAttr)customAttrProvider.GetCustomAttributes(typeof(MyAttr), false)[0];

                Console.WriteLine(att.Data);

            }

        }

 

        [return: MyAttr(Data = 17)]

        public static string doo()

        {

            return "hehe";

        }

    }

}


输出两个17. 两种方法都可以获取返回值的自定义特性。


每个.NET开发都应掌握的C#特性(Attribute)知识点 本文介绍了C#特性(Attribute)的核心知识点。特性是一种元数据机制,用于为代码元素添加信息,影响其行为或提供额外信息。文章从基本概念入手,通过HttpGet特性示例说明特性用法;介绍了Obsolete、Serializable等内置特性;展示了如何自定义特性并添加元数据;探讨了特性在文档生成、AOP编程等场景的应用;讲解了特性的运行时和编译时用法;最后演示了通过反射访问特性信息。全文系统梳理了C#特性的关键知识点,为.NET开发者提供了实用参考。 阅读详情

相关推荐

Win10 + Linux 双系统删除(Linux)

删除Linux所使用的磁盘分区 进入此电脑->计算机->管理->磁盘管理

weixin_52247624的博客 944

C#特性 Attribute

特性:记忆是一个类,继承自Attribute,如果是的话,它就是特性 特性的继承 using System.Runtime.InteropServices; namespace System.Diagnostics { // // 摘要: // 指示调试器逐句通过代码,而不是单步执行代码。 无法继承此类。 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTarge

m0_58717895的博客 1229

【AGC】【serverless】【云函数】云函数常见问题

1、云函数添加了AUTH触发器后,在用户执行注册、销户、登录、登出动作时,云函数的event对象会自动触发返回相应信息。比如我在“层”的压缩包里放了config/config.txt,那么我在云函数里怎么调用这个文件?层的目录是:/dcache/layer,函数的目录是/dcache/layer/func。在云函数里往云数据库里插入数据返回的是180000,这是正常吗?已经按照文档在后台对应的云函数里配置了,所需的AUTH触发器。层的用法和放在函数里的用法是相同的。云函数里的层如何调用?

华为开发者联盟 839

(八).net之特性Attribute声明、使用、验证

特性Attribute 特性:是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。 特性(Attribute)用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的特性:预定义特性和自定义特性。

lwy 1735

基于51单片机的智能花盆灌溉系统设计与实现

本文详细介绍了基于51单片机的智能花盆灌溉系统设计与实现,通过DS18B20温度传感器、土壤湿度传感器和LCD1602显示屏等硬件模块,结合精确的算法控制,实现自动监测与灌溉。系统解决了传统灌溉依赖定时器、缺乏可视化界面的问题,适合上班族、园艺爱好者和植物园工作人员使用,有效提升植物养护效率。

honey的博客 1014

Gemini 3.1 Flash本地部署实操:Ollama+Open WebUI零门槛运行指南

大型语言模型(LLM)本地运行是指将模型权重下载至本地设备,通过推理引擎完成离线推理的过程;其核心原理依赖量化压缩(如GGUF格式)与轻量级运行时(如Ollama)实现CPU/GPU高效加载;技术价值在于低延迟响应、数据隐私可控及免网络依赖;典型应用场景包括办公提效(邮件/周报生成)、学生学习辅助、产品原型验证等边缘AI任务;本文聚焦Gemini 3.1 Flash这一面向消费级硬件优化的轻量模型变体,结合Ollama模型管理与Open WebUI图形界面,提供从环境准备、模型拉取到流式对话的完整新手实操路

weixin_32238157的博客 494

C#中 自定义验证规则ValidationAttribute的使用

C#中 自定义验证规则ValidationAttribute的使用 迷恋自留地 进行接口请求的时候难免会对请求字段进行验证,验证对象的所有字段的值是否合乎要求,如进行非空检测,长度检测等等。 Required 用法示例 [Required(ErrorMessage="请填写名称")] 如果属性为null,"",或只包含空白字符,会引发异常(ModelState.IsValid会false) RegularExpression 用法示例 [RegularExpression(pattern:@"^[1-

混迹自留地 1400

第069篇:浸入边界法进阶

浸入边界法(Immersed Boundary Method, IBM)是处理流固耦合问题的强大数值方法。本文深入介绍直接力法、反馈力法、Ghost Cell方法和多域IBM等高级技术。通过Python实现完整的IBM求解器,展示处理移动边界、弹性边界和多体相互作用的方法。浸入边界法,直接力法,反馈力法,Ghost Cell,流固耦合,移动边界,弹性边界Navier-Stokes方程添加体积力项:∂u∂t+(u⋅∇)u=−1ρ∇p+ν∇2u+f\frac{\partial \mathbf{u}}{\part

2401_87715305的博客 412

C#深入学习--特性

目录 一、概述 二、基本概念 三、自定义特性 四、根据对象属性自定义验证对象 五、总结 一、概述 特性,说的白话一点,就是说明某个东西的特殊性,它不能单独存在,必须依附在某个东西上,这里的东西是指C#代码中类,属性,方法。特性就是对这些类,方法,属性进一步修饰。比如说,定义个sting 类型 属性A ,我们要求该属性最小长度为5.这个要求就可以说是它的特性。 二、基本概念 ...

Nemo0210的专栏 583

Ardupilot EKF3核心算法《开篇》

Ardupilot EKF3核心算法本专栏重点,透彻,详细的分析了ardupilot的EKF3,保证是你看到的最完美的EKF3资料,相信你的选择不会错误。网上EKF资料真是太多,说真的没有一篇讲解好的。!!

陌城烟雨 1413

基于YOLO26深度学习框架的智能停车场管理系统的算法研究实现方法

本文研究了基于YOLO26深度学习框架的智能停车场管理系统实现方法。系统采用CSPDarknet53作为主干网络,结合特征金字塔和注意力机制提升检测性能。通过数据预处理、模型训练和停车分析三个主要模块,实现了车位占用检测、车辆类型识别等功能。实验结果表明,该方法在检测精度和速度方面表现优异,为智能停车场管理提供了有效的技术解决方案。

一键难忘的博客 571

C#提高--------------获取方法返回值的自定义特性(Attribute)

.NET(C#):获取方法返回值的自定义特性(Attribute) 转载 2013年05月08日 10:54:42 1456 来自:http://www.cnblogs.com/mgen/archive/2011/11/02/2233374.html   .NET中特性的索取就是围绕着ICustomAttributeProvider接口(System.Reflection命名空间内),...

weixin_33973609的博客 738

华为OD机考2025C卷 - 精准核酸检测(Java & Python& JS & C++ & C语言)

华为OD机考2025C卷 - 精准核酸检测,提供在线OJ Java & Python& JS & C++ & C

算法大师! 2882

总结一下 C# 如何自定义特性 Attribute 并进行应用

Attribute(特性)是一种用于为程序元素(如类、方法、属性等)提供元数据信息的方法,描述其用途、状态、约束等,可以在运行时通过反射获取并读取,用于实现一些动态的行为,如配置加载、权限检查等,应用范围非常广泛,在实际开发中经常用于标记和控制程序的行为,提高代码的可读性和灵活性

yangshuquan的专栏 2091

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# 特性(Attribute)

Net 框架提供了三种预定义特性:\Obsolete让我们构建一个名为 DeBugInfo 的自定义特性,该特性将存储调试程序获得的信息。它存储下面的信息:bug 的代码编号辨认该 bug 的开发人员名字最后一次审查该代码的日期一个存储了开发人员标记的字符串消息我们的 DeBugInfo 类将带有三个用于存储前三个信息的私有属性(property)和一个用于存储消息的公有属性(property)。

weixin_51705943的博客 1585

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C# 特性(Attribute)详细介绍

1、什么是Atrribute
首先,我们肯定Attribute是一个类,下面是msdn文档对它的描述: 公共语言运行时允许你添加类似关键字的描述声明,叫做attributes,它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。 ...

Simon 7179

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

.Net Attribute 特性 自定义特性(二)

在实际开发中,我们经常看到如MVC中标记在方法上的 [HttpGet] [HttpPost][HttpDelete][HttpPut] ,序列化时标记在类上的 [Serializable] ,使用EF标记属性的 [Key] ,使用特性的地方随处可见。二次升级已完成,看看代码,瞬间心情舒畅。细心的朋友会发现,校验返回的都是true跟false,每次遇到校验不通过的字段后下面的都不再校验了,想要返回所有未校验通过的字段,并告诉调用者,一次性把所有字段都按照格式填好,这样才是我们想要的效果。

lwpoor123的博客 1533

C#自定义特性(Attribute)

C#自定义特性(Attribute) —— 入门经典代码,可以直接用。 该博客例子解读:自定义了VersionAttribute特性并继承了Attribute,里面有几个属性。MyCode上展示该特性的使用。然后在控制台中取出。 自定义的Attribute特性,必须直接或间接继承System.Attribute 自定义的Attribute特性,名称最后都应该有个Attribute后缀。使用...

anjun_xf的专栏 1450

C# 特性(Attribute)

每一次付出都会有一定的回报,或多或少。

weixin_43575558的博客 1374

.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法

前段时间有朋友问道一个这样的问题,.NET Core中如何通过Attribute的元数据信息来调用标记的对应方法。我第一时间想到的就是通过C#反射获取带有Custom Attribute标记的类,然后通过依赖注入(DI)的方式获取对应服务的方法并通过反射动态执行类的方法,从而实现更灵活的编程方式。/// 自定义一个Attribute类型set;/// 前进服务");/// 后退服务");

mc_ChenF_B的博客 948
上一篇: JS打开超链接的几种形式
下一篇: GET和POST有什么区别?及为什么网上的多数答案都是错的。
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值