第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()参数是程序集的完整路径名。
后记:怎么只写出这么点内容,我的提炼能力有待加强!