漫话CLR ---- 定制Attribute

   <<CLR via C#>>用了10页纸来讲Attribute,其实重点只有这段话:

所谓"定制Attribute",就是一个类的实例,它被序列化成为驻留在元数据中的一个字节流.在运行的时候,可以对元数据中包含的字节进行反序列化,从而构造类的一个实例.

  简而言之,就是对一个类的附加描述信息.我个人理解为编译到程序中的"注释".

  这里不打算讨论如何使用Attribute,因为不同的Attribute他的使用方式肯定是不同的,列举其使用方法是MSDN干的事情.

  也不打算说明如何定义你自己的Attribute,因为MSDN上说的比我更加详细.

  我想说的其实就是,纯粹的定制Attribute毛线用都不起,只会给程序集中生成额外的元数据.如果你想找的类似EF中的[Key],使用非托管代码的[DllImport],序列化的特性[Serializable] 等等这些特性,你找错方向了,Attribute实现不了这些功能,真正起作用的是反射.你看到像魔法一样的,只增加一些Attribute,这些类或者方法或者其他什么的就有了使用非托管代码的能力,或者有了序列化的功能,或者自动的进行主键的设置操作,其实没有那么神奇,他们都是反射在背后做的.

  Attribute只是给类,方法,属性这些Type增加了额外的信息.而后通过反射,在运行时取到额外信息(Attribute)的内容,接着再利用反射回来的信息进行操作判断,进行业务逻辑.

  PS:还有编译器...

/*其实Attribute真的是非常强大的东西,结合反射使用只是其中的一部分,Attitude主要是面向编译器的.AOP编程中的PostSharp就是使用了Attribute.*/

 

转载于:https://www.cnblogs.com/woodywu/p/3265036.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值