反射

应用程序域:一个应用程序域是一组程序集的一个逻辑容器。 
应用程序域三个特点: 
一、应用程序域之间是相互隔离的。 
二、应用程序域可以被卸载。 
三、应用程序域可以单独实施安全策略和配置策略 
AppDomain.SetAppDomainPolicy 
应用某种安全策略。 
System.AppDomainSetup 
允许我们设置或者查询一个应用程序域的配置策略。 
System.MousbalByRefobject 
类型可以为对象提供跨越应用程序域边界的访问能力。 
AppDoamin的事件AssemblyLoad; 
反射: 
GetMembers(); 
//可选显示成员的类型 
GetMembers(BindingFlags); 
 
显示加载程序集: 
一、Load 
二、LoadFrom 
三、LoadWithPartialName 
 
AppDomain.Load将指定的程序集加载到当前应用程序域中。 
LoadFrom工作原理: 
CLR会打开指定文件并从文件元数据中提取程序集的版本,语言文化和公有密钥标记然后所有这些信息将被作为参数传递给Load方法。Load方法接着应用所有这些策略信息来搜索程序集,如果找到了匹配的程序集CLR将LoadFrom方法指定的程序集文件的完整路径名称和Load方法找到的程序集文件的完整路径名称做比较。如果两个路径相同那么该程序集被认为是应用程序的一部分。如果两个路径不同或Load方法找不到匹配的文件那么程序集将被认为是一个数据文件而不被认为是应用程序的一部分。 
 
显示卸载程序集: 
创建一个类型的实例: 
一、System.Activator的CreateInstance方法。 
二、System.Activator的CreateInstanceFrom方法。 
三、System.AppDomain的一些方法: 
四种构造实例的方法: 
1.CreateInstance 
2.CreateInstanceAndUnwrap 
3.CreateInstanceFrom 
4.CreateInstanceFromAndUnwarp 
实例方法所以允许我们指定在那个应用程序域中构造对象。 
四、System.Type的InvokeMember实例方法。 
五、System.Reflection.ConstruetorInfo的Invoke实例方法。 
 
如果我们希望不调用构造器就可以创建一个值类型的实例,我们只能以以下两个版本的方法中选择其一 
1.参数为Type的那个版本的CreateInstance方法。 
2.参数为Type和Boolean的那个版本的CreateInstance的方法。 
 
前面列出的几种机制允许我们创建除数组和委托之外的所有类型的实例。 
要创建数组实例我们应该调用Arrary的静态方法CreataInstance。 
要创建委托实例我们应该调用Delegate的静态方法CreataDelegate。 
 
调用类型的方法: 
第一:它必须选择要调用的成员---这个过程称作绑定。 
第二:它必须调用该成员-----这个过程称作调用。
posted @ 2008-09-28 14:18  离思  阅读(304)  评论(0编辑  收藏  举报