特性(Attributes)
定义:特性本质上就是有一种类,通过添加特性,就可以实例化这个特性类;
我们主要讲一下如何自定义特性,定义的方式和普通的类定义方式一致,但是,
第一:需要继承标准特性类
第二:需要添加标准特性,用来限制特性的使用范围等
第三:必须要定义构造函数,即使是空的
如下:
[AttributeUsage(AttributeTargets.All,AllowMultiple = true, Inherited=true)] //基于标准特性
class CustomAttr:Attribute //继承标准特性类
{
//0参数构造函数
public CustomAttr()
{ }
使用特性例子如下:(这里相当于实例化了2个类)
[CustomAttr(name ="dj",sore=,message ="")]
[CustomAttr(name = "sq", sore = , message = "")]
class Test
{ }
注意:
[CustomAttr(name ="dj",sore=100,message ="222")], 这里相当于调用了不带任何参数的构造函数,但是使用属性功能进行赋值
[CustomAttr("dj,100,"666")], 这里相当于直接调用了带有三个参数的构造函数
这就是为什么我们必须要给自定义特性类添加构造函数的原因
特性的反射
static void Main(string[] args)
{
System.Reflection.MemberInfo info = typeof(Test);
var customAttrLsit = Attribute.GetCustomAttributes(info, typeof(CustomAttr)) as CustomAttr[];
for (int i = ; i < customAttrLsit.Count(); i++)
{
Console.WriteLine("================================================");
Console.WriteLine("创建人:{0}", customAttrLsit[i].name);
Console.WriteLine("创建时间:{0}", customAttrLsit[i].sore);
Console.WriteLine("备注消息:{0}", customAttrLsit[i].message);
}
Console.ReadKey();
}
特性(Attributes)的更多相关文章
- C#中的定制特性(Attributes)
C#中的定制特性(Attributes) 介绍 Attributes是一种新的描述信息,我们既可以使用attributes来定义设计期信息(例如:帮助文件.文档的URL),还可能用attributes ...
- C#中的特性(Attributes)
约定: 1.”attribute”和”attributes”均不翻译 2.”property”译为“属性” 3.msdn中的原句不翻译 4.”program entity”译为”语言元素” Attri ...
- C# 特性Attributes 和反射
一,Attributes 类新建一个子类,DetailAttributes 二, 在类的属性声明上面加Attributes public class testAttributes { [Detail( ...
- unity中的[xxxxxx]特性(Attributes)
[SerializeField] 在Inspector版面中显示非public属性,并且序列化:若写在public前面,等于没写. [Obsolete("调用提示信息")] [No ...
- C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询
1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法 ...
- C# 语言规范_版本5.0 (第17章 特性)
1. 特性 C# 语言的一个重要特征是使程序员能够为程序中定义的实体指定声明性信息.例如,类中方法的可访问性是通过使用 method-modifiers(public.protected.intern ...
- [ASP.NET MVC 小牛之路]02 - C#知识点提要
本人博客已转移至:http://www.exblr.com/liam 本篇博文主要对asp.net mvc开发需要撑握的C#语言知识点进行简单回顾,尤其是C# 3.0才有的一些C#语言特性.对于正在 ...
- 自定义CollectionViewLayout
转自answer-huang的博客 原文出自:Custom Collection View Layouts UICollectionView在iOS6中第一次被介绍,也是UIKit视图类中的一颗 ...
- 深入理解JS的delete
原文链接: Understanding delete原文作者: Kangax原文日期: 2010年01月10日 翻译日期: 2014年02月07日 翻译人员: 铁锚 !!!!!!!!草稿版本的翻译完成 ...
随机推荐
- z-index 解析
很多人对z-index的认识仅止于:z-index是控制元素在页面中的堆叠顺序,z-index值高的元素显示在z-index值低的前面.而其中的原因才很少有人去深究,直到自己在实际项目中碰到由于z-i ...
- C# 获取Get请求返回
/// <summary> /// 远程获取页面数据 /// </summary> /// <param name="Url">地址</p ...
- Jquery文本框值改变事件(支持火狐、ie)
Jquery值改变事件支持火狐和ie浏览器,并且测试通过,绑定后台代码可以做成autocomplete控件. 具体代码列举如下: $(document).ready(function () { $(& ...
- HighCharts 图表高度动态调整
HighCharts 图表高度动态调整 前言 在使用HighCharts控件过程中,发现图表可以自适应div的高度,无法根据图表x.y轴的数量动态调整div高度,否则图标挤在一起,看起来非常不美观,也 ...
- java版微信公众平台自定义菜单创建代码实现
微信公众平台自定义菜单创建代码实现—java版 搞了两天的自定义菜单,终于搞定了,现在分享下心得,以便后来者少走弯路...... 好了,先看先微信官方的API 官方写的很详细,但是我看完后很茫然,不知 ...
- 链方法[C# 基础知识系列]专题三:如何用委托包装多个方法——委托链
最近研究链方法,稍微总结一下,以后继续补充: 弁言: 上一专题分析了下编译器是如何来翻译委托的,从中间语言的角度去看委托,希望可以帮助大家进一步的理解委托,然而之前的分析都是委托只是封装一个方法,那委 ...
- Python pandas 0.19.1 Intro to Data Structures 数据结构介绍 文档翻译
官方文档链接http://pandas.pydata.org/pandas-docs/stable/dsintro.html 数据结构介绍 我们将以一个快速的.非全面的pandas的基础数据结构概述来 ...
- InvocationHandler中invoke()方法的调用问题
转InvocationHandler中invoke()方法的调用问题 Java中动态代理的实现,关键就是这两个东西:Proxy.InvocationHandler,下面从InvocationHandl ...
- Dubbo源码学习--服务是如何引用的
ReferenceBean 跟服务引用一样,Dubbo的reference配置会被转成ReferenceBean类,ReferenceBean实现了InitializingBean接口,直接看afte ...
- String与string的区别(注意大小写)
在C#编程过程中经常见到string和String,下面来看看它们之间的区别: 1. string是C#中的类, String是.net Framework的类. string是String的别名,S ...