zoukankan      html  css  js  c++  java
  • 漫话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.*/
  • 相关阅读:
    BZOJ1040: [ZJOI2008]骑士
    酱油记:GDKOI2018
    BZOJ1800: [Ahoi2009]fly 飞行棋
    BZOJ3894: 文理分科
    树链剖分
    文件格式问题
    10.23模拟赛
    snakes
    数据结构题目
    jquery&nbsp;easyui&nbsp;datebox&nbsp;的使用&nbsp;.
  • 原文地址:https://www.cnblogs.com/woodywu/p/3265036.html
Copyright © 2011-2022 走看看