主要就是几点

加载DLL

通过Assembly类的方法,主要是Load,还有其他一些方法可以自己研究下,Load方法可以传一个简单名,也可以传完整的限定名,传简单名(MyDLL)的时候,对应的DLL文件(MyDLL.dll)必须位于当前目录?(或者是PATH里面),如果是引用系统注册的DLL,则必须是完整的限定名,例如:MyDLL, Version=1.0.0.0, Culture=Neutral, PublickeyToken=d3cc2ceeafb73bc1

得到Type

这个没有什么,调用上面得到Assembly实例的GetType就行了

创建实例

得到Type以后,使用Activator.CreateInstance就可以了

调用方法

通过Type的GetMethod得到需要调用的MethodInfo对象,然后调用MethodInfo的Invoke方法。

废话少说,看代码吧:

Assembly assembly = Assembly..Load(“MyDLL”);
Type type = assembly.GetType(“MyDLL.MyClass”);
object obj = Activator.CreateInstance(type);
MethodInfo createMethod = type.GetMethod(“MyMethod”);
object[] parameters = new object[1];
parameters[0] = “ParameterValue”
object result = createMethod.Invoke(obj, parameters);

其实和Java差不多,就是java不需要load那一步,因为默认是从CLASSPATH中的所有jar中都可以load的,这个是JVM做的事情。如果需要load其他的不在CLASSPATH中的jar也是可以的,比较麻烦而已。

(Visited 158 times, 1 visits today)