CLR加载器(一)使用加载器的方式
加载器往往是隐式地为你工作。程序员能够通过程序集加载器显式地与加载器进行交互。程序集加载器通
过System.Reflection.Assembly类的LoadFrom静态方法向程序员公开。这个方法接收一个字符串,它可以
是文件系统路径,也可以是识别含有程序集清单模块的统一资源定位器。
下面代码加载了位于file://C:/usr/bin/xyzzy.dll的程序集。
using System;
using System.Reflection;
public Class Utilites{
public static Object LoadCustomerType{
Assembly a = Assembly.LoadFrom("file://C:/usr/bin/xyzzy.dll");
return a.CreatInstance("Acmecorp.LOB.Customer");
}
}
using System.Reflection;
public Class Utilites{
public static Object LoadCustomerType{
Assembly a = Assembly.LoadFrom("file://C:/usr/bin/xyzzy.dll");
return a.CreatInstance("Acmecorp.LOB.Customer");
}
}
尽管通过位置加载程序集很有意思,但是,大多数程序集是通过程序集解析器按名称加载的。程序集解析器使用四部程序集的名字(名称,文化,开发人员,组件版本),从而决定哪个程序集将由程序集加载器加载到内存中。程序集解析器通过System.Reflection.Assembly类的Load方法向程序员公开。
Load方法和LoadFrom方法很相似,这种相似只是在表面上,因为Load方法先使用程序集解析器运用版本策略,确定将加载程序集的版本。
下面的代码使用了程序集解析器
using System;
using System.Reflection;
public Class Utilites{
public static Object LoadCustomerType{
Assembly a = Assembly.Load("xyzzy, Version = 1.2.3.4, Culture = neutral,
PublicKeyToken = 9a33f2632997fcc");
return a.CreatInstance("Acmecorp.LOB.Customer");
}
}
using System.Reflection;
public Class Utilites{
public static Object LoadCustomerType{
Assembly a = Assembly.Load("xyzzy, Version = 1.2.3.4, Culture = neutral,
PublicKeyToken = 9a33f2632997fcc");
return a.CreatInstance("Acmecorp.LOB.Customer");
}
}
版本策略可以通过配置文件指定。配置文件包括计算机范围的配置文件,和特定应用程序的配置文件。
计算机范围的配置文件总是被命名为machine.config,存于%SystemRoot%\Microsoft.Net\Framework\v1.X.nnnn\Config目录下。
特定应用程序的配置文件总是在应用程序的APPBASE目录。对于Asp.Net应用程序,APPBASE是Web应用程序的虚拟目录的根节点。对于基于CLR的.EXE的程序,其配置文件的名称与执行文件的名称相同,只是配置文件名的后缀为".Config"。
今天就先写到这里,下次奉上关于配置文件的结构和应用
这是我第一次写Blog文章,如有不对之处,请各位前辈指点。