通过System.Reflection命名空间下的Assembly类可以动态加载外部程序集,其中Load()方法和LoadFrom()方法。
Load()方法用于加载当前程序集位于相同目录下的外部程序集,需要提前添加外部程序集的引用。
LoadFrom()方法可以加载其他目录中的程序集,需要书写完整目录。
下例中,首先建立项目MethodRef3,然后建立类AppClassRef代码如下所示,外部程序集为项目MethodRef2,建立类ClassRef,类中代码见《利用反射技术获取当前程序集指定类型的信息》,这里模拟在项目MethodRef3中调用外部程序集MethodRef2.exe中的类信息。
测试:输入外部程序集MethodRef2。exe里的类名ClassA,则输出类ClassA的详细信息
==============当前应用程序域中所有加载的程序集=====================
程序集:mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e
089
程序集:mscorlib.resources, Version=2.0.0.0, Culture=zh-CHS, PublicKeyToken=b77a
5c561934e089
程序集:MethodRef3, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
请输入检测类型名称:MethodRef2.ClassA
类名:MethodRef2.ClassA(如果有命名空间要加命名空间,此处命名空间为MethodRef2)
此类是否为泛型:False
此类是否为接口:False
此类是否为类类型:True
此类是否为COM对象:False
此类是否为public访问类型:False
此类是否为密封类型:False
此类是否为值类型:False
成员类型:Method,名称:get_Name
成员类型:Method,名称:MethodA
成员类型:Method,名称:MethodB
成员类型:Method,名称:ToString
成员类型:Method,名称:Equals
成员类型:Method,名称:GetHashCode
成员类型:Method,名称:GetType
成员类型:Constructor,名称:.ctor
成员类型:Property,名称:Name
成员类型:Field,名称:_name
MethodRef2.ClassA实现的接口类型MethodRef2.IClassA
MethodRef2.ClassA实现的接口类型MethodRef2.IClassB
==============当前应用程序域中所有加载的程序集=====================
程序集:mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e
089
程序集:mscorlib.resources, Version=2.0.0.0, Culture=zh-CHS, PublicKeyToken=b77a
5c561934e089
程序集:MethodRef3, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
程序集:MethodRef2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
请输入检测类型名称: