第13章 反射

题外话:我真是个奇怪的人。昨天白天纠结了老半天,跟能找到谈心的朋友全都倾诉了一遍我的浮躁后,在昨天晚上居然安下心来了。难道是因为反射比较简单,让我有了一丝丝的成就感?反射并不简单,我印象中,一个大牛必须用到的技术,依赖注入是不是就是这个啊?(暂时还不理解)。这次的学习只是基础的了解,使用。最有收获的就是特性。我还是比较喜欢这章的风格,用一个软件更新提示的demo演示了特性及反射的作用。

1.特性

  a.AttributeUsage特性 用来标记定制特性可以应用到哪些类型的程序元素上。可以用“|“运算符组合起来 如例1。 Assembly 和 Module 不对应任何程序元素,可以放在源代码的任何地方,但需要用关键字assembly 或 module 如例2。

  例1:[AttributeUsage(AttributeTargets.Property|AttributeTargets.Field)]

  例2:[assembly:SomeAssemblyAttribute(parameters)]

  b.AllowMultiple 表示一个特性是否可以多次应用到同一项上

  c.特性参数[FieldName("SocialSecurityNumber")]对应还特性的构造函数。

     可选参数[FieldName("SocialSecutiryNumber", Comment="This is the primary key")] comment 对应于特性的公共属性或字段。

2 反射

  a.Type 是许多反射技术的入口。type实际上是一个抽象的积累,实例化了一个Type对象,就实例化了Type 的一个派生类。获取指向给点类型的Type引用有3种常用方式:

     1.Type t = typeof(double);

     2.double d = 10;

        Type t = d.GetType();

      3 Type t = Type.GetType("System.Double");

3 Assembly 类

   Assembly.Load() 参数是程序集的名称,运行库会在各个位置上搜索该程序集。

   Assembly.LoadFrom()参数是程序集的完整路径名。

后记:怎么只写出这么点内容,我的提炼能力有待加强!

posted on 2011-03-08 12:04  小齐宝  阅读(148)  评论(0)    收藏  举报

导航