特性(Attribute)

常用的系统特性

Serializable:常用于标记类,表示可被序列化

Nonserialized :不允许序列化,在被标注为Serializable序列化的类中,某字段前加Nonserialized,表示该字段不允许序列化。

Obsolete: 标记方法,被标记的方法在调用时会产生警告或报错。

    [AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)][Serializable]public class MyAttribute{[NonSerialized] //仅对字段有效public int MyProperty;[Obsolete("这个方法不要用了,我设置了报错",true)]public void Show(){Console.WriteLine("test");}}

AttributeUsage:也是一个特性,是用来修饰特性的特性,一般标记在特性类上
AttributeTargets指定当前特性只能标记在某个地方(属性、方法、字段等地方);AttributeTargets.All表示可标记在任意地方
AllowMultiple:是否可以重复标记
Inherited:是否可以继承特性

自定义特性

1.每使用一个特性标记一次都相当于实例化了一个特性对象

2.可以通过反射获取被标记的特性。

namespace MyAttribute
{[User(100)][User("我是类上的特性")]public class UserInfor{[User(200)][User("我是属性上的特性")]public int MyProperty { get; set; }[User(300)][User("我是方法上的特性")]public void Show(){}}[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)]public class UserAttribute: Attribute{public int Id = 0;public string Name { get; set; } = "我是空的";public string PassWord { get; set; }public UserAttribute(){}public UserAttribute( int Id){this.Id = Id;}public UserAttribute(string Name){this.Name = Name;}public string Show(){return this.PassWord;}}
}
namespace MyAttribute
{internal class Program{static void Main(string[] args){UserInfor userInfor = new UserInfor();Type type = userInfor.GetType();if (type.IsDefined(typeof(UserAttribute),true)) //判断type这个类上是否有UserAttribute的标记{//GetCustomAttributes:获取标记在类外层的特性   true表示继承的也算foreach (UserAttribute item in type.GetCustomAttributes(true)){Console.WriteLine($"{item.Id}");Console.WriteLine($"{item.Name}");}}foreach (var item in type.GetProperties()){//判断item这个属性上是否有UserAttribute的标记if (item.IsDefined(typeof(UserAttribute), true)){//获取标记在属性上的所有特性   true表示继承的也算foreach (UserAttribute userAttribute in item.GetCustomAttributes(true)){Console.WriteLine($"{userAttribute.Id}");Console.WriteLine($"{userAttribute.Name}");}}}foreach (var item in type.GetMethods()){//判断item这个方法上是否有UserAttribute的标记if (item.IsDefined(typeof(UserAttribute), true)){//获取标记在属性上的所有特性   true表示继承的也算foreach (UserAttribute userAttribute in item.GetCustomAttributes(true)){Console.WriteLine($"{userAttribute.Id}");Console.WriteLine($"{userAttribute.Name}");}}}Console.ReadLine();}}
}

特性(Attribute)相关推荐

  1. .net 特性 Attribute

    public sealed class RemarkAttribute : Attribute{public string Remark { get; set; }// 构造函数public Rema ...

  2. 区分元素特性attribute和对象属性property

    定义 元素特性attribute是指HTML元素标签的特性 下面的id.class.title.a都是特性,其中a叫做自定义特性 <div id="id1" class=&q ...

  3. .NET基础编程之特性 - Attribute

    这一篇文章是给大家介绍的是:.NET基础编程之特性 - Attribute,对这一部分掌握不熟悉的同学,可以仔细的看一下! 一.特性简介 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集. ...

  4. Unity游戏开发——C#特性Attribute与自动化

    这篇文章主要讲一下C#里面Attribute的使用方法及其可能的应用场景. 比如你把玩家的血量.攻击.防御等属性写到枚举里面.然后界面可能有很多地方要根据这个枚举获取属性的描述文本. 比如你做网络框架 ...

  5. 特性Attribute

    1.Attribute介绍    我们用VS进行编程时,智能提示再提供方法和属性列表的时候,有时会有下面的这种情况: 提示某个方法已经是过时的了,还会给与提示信息.出现此效果就是Attribute(特 ...

  6. C#的特性Attribute

    一.什么是特性 特性是用于在运行时传递程序中各种元素(比如类.方法.结构.枚举.组件等)的行为信息的声明性标签,这个标签可以有多个.您可以通过使用特性向程序添加声明性信息.一个声明性标签是通过放置在它 ...

  7. C# 特性 Attribute

    特性就是在类的类名称.属性.方法等上面加一个标记,使这些类.属性.方法等具有某些统一的特征,从而达到某些特殊的需要.举个小栗子:方法的异常捕捉,你是否还在某些可能出现异常的地方(例如数据库的操作.文件 ...

  8. ABP的一些特性 (Attribute)

    大家应该很熟悉Attribute这个东西吧,ABP里面扩展了一些特性,做过滤权限,返回内容等进行控制,在这里小记下,方便后续查看. [DontWrapResult]  //ABP默认对返回结果做了封装 ...

  9. C#的特性(Attribute)详解

    C#特性是指我们可以对类.以及C#程序集中的成员进行进一步的描述,比如我们写一个关于人的类Person,该类可以对人的属性以及某些行为(方法)进行描述.那么如果我们要对人类进行进一步描述呢,比如人这个 ...

  10. 基于特性(Attribute)的实体属性验证方案设计

      各位朋友,我是Payne,大家好,欢迎大家关注我的博客,我的博客地址是https://qinyuanpei.github.io.在这篇文章中,我想和大家探讨下数据校验的相关问题,为什么我会对这个问 ...

最新文章

  1. IDEA 2017 安装后 关联SVN
  2. chapter4 module and port
  3. TP5.1类的自动加载
  4. 每个tabpage中都有一个dategridview_每个女人,都有一个礼服梦
  5. Maven mvn install 本地jar添加到maven仓库中
  6. JavaScript时间格式化工具函数
  7. oo结尾的单词发音规律
  8. Chrome OS Factory开发测试流程
  9. VBA学习笔记之单元格
  10. js控制表格实时编辑
  11. 开放平台-百度开放平台:百度开放平台
  12. BNN网络量化与8bit量化之间关系
  13. CFGym - 101086M. ACPC Headquarters : AASTMT (Stairway to Heaven) - 字符串处理
  14. BOOT ROM 初始化内容、启动设备、镜像烧写
  15. 钉钉小程序图表刷新 antv-f2
  16. 嵌入式文件系统损耗平衡算法
  17. 小学生趣味C++编程第27课 老狼老狼几点钟
  18. 你是胡萝卜,是鸡蛋,还是咖啡豆
  19. RAID5破坏的数据恢复流程和思考
  20. 从外包公司到今日头条offer,聪明人已经收藏了!

热门文章

  1. 广州外贸童装批发市场
  2. cf div2 #444 (ABC)(D已补)
  3. 膨胀卷积(Dilated convolutions)(又叫空洞卷积、扩张卷积)
  4. vue3 - 仿 element-ui Breadcrumb 面包屑组件封装自己的面包屑组件
  5. 阿里云S6机型与N4机型哪个好?
  6. python wx窗体界面
  7. 微信扫码支付dome php,帝国cms 微信扫码支付 模式二 扫码付款demo
  8. style标签中的几个属性
  9. 微信也能设置主题了,盘他!
  10. android 文件编辑,文件编辑软件(在线文档编辑)