前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >五分钟完全弄懂C#特性

五分钟完全弄懂C#特性

作者头像
zls365
发布2021-10-19 10:50:32
6950
发布2021-10-19 10:50:32
举报
文章被收录于专栏:CSharp编程大全CSharp编程大全

前言

在工作或者学习中,难免或多或少的接触到特性这个东西,可能你不太清楚什么是特性,那么我给大家举两个例子 [Obsolete],[HttpGet],[HttpPost],[Serizlized],[AuthorizeFilter] (总有你见过的一个吧) 。有没有觉得好熟悉,下面跟着小赵一探究竟。

特性(Attribute)用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。

特性(Attribute)的名称和值是在方括号内规定的,放置在它所应用的元素之前。positional_parameters 规定必需的信息,name_parameter 规定可选的信息。

特性的定义

特性的定义:直接或者间接的继承 Attribute 类

定义完就直接可以在方法前面用 [CustomAttribute] 可以省略 Attribute 写成[Custom]

在特性类上面的特性 /// AttributeTargets.All --可以修饰的应用属性 /// AllowMultiple = true ---是否可以进行多次修饰 [AttributeUsage(AttributeTargets.All,AllowMultiple = true)]

特性的使用

特性本身是没有啥用,但是可以通过反射来使用,增加功能,不会破坏原有的封装 通过反射,发现特性 --实例化特性--使用特性 通过特性获取表名(orm)就是一个很好的案例

首先定义个类,假装和数据库中的表结构一样,但表明是t_student 可以通过两个方法来获取表名(方法1加字段,或者扩展方法tostring,但都破坏了以前的封装,不提倡这样做),然后就用到今天学习的特性attribute

在定义特性类TableNameAttribute

然后再student前面加上自定义特性

实现特性的扩展方法

代码语言:javascript
复制

F5执行,查看运行结果

总结

特性本身是没有啥用,但是可以通过反射来使用,增加功能,不会破坏原有的封装 项目我放在我的github[1]https://github.com/PrideJoy/NetTemple/tree/master/%E7%89%B9%E6%80%A7

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CSharp编程大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 特性的定义
  • 特性的使用
    • 总结
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档