c# 如何调用指定文件夹里面的动态库dll

最近写代码时遇到了调用指定文件夹里面的dll的情况,在此总结一下:

一、我这里使用的方法是,Assembly 和 MethodInfo,代码如下:

Assembly myAssembly = Assembly.LoadFrom(dllPath);//dllPath是dll文件所在的文件夹

Type myType = myAssembly.GetType("mydll.TestCall");//mydll:namespace的名字,TestCall:类名

object myInstance = Activator.CreateInstance(myType);

MethodInfo myMethod = myType.GetMethod("testFunc");//testFunc:函数名

object returnValue = myMethod.Invoke(myInstance, new string\[\] { "", "" }); // 如果不需要参数,使用null,否则提供适当的参数数组,这里函数testFunc是两个string类型的参数

返回值returnValue,如果没有返回值,返回的是null

二、如果dll文件里面有重载函数话,处理如下,主要是GetMethod函数需要变动:

比如函数testFunc存在两个string参数 和 三个string参数的重载函数,那么,调用三个参数时,代码如下:

MethodInfo myMethod2 = myType.GetMethod("testFunc", new Type\[\] { typeof(String), typeof(String), typeof(String) });//匹配调用函数的参数类型和个数

相关推荐
乌药ice几秒前
c#中一个多线程安全的HashSet
开发语言·c#
秋名RG1 分钟前
Java 异常处理全攻略:从入门到实战(JDK 21 版)
java·开发语言
努力努力再努力wz3 分钟前
【Docker入门系列】:从架构演进到容器化:一文建立 Docker、虚拟化与 Namespace 的底层心智模型
运维·开发语言·数据结构·c++·docker·容器·架构
wuyk5558 分钟前
13.堆排序:基于完全二叉树的高效排序算法一、什么是堆排序?
开发语言·算法·排序算法
runningshark9 分钟前
Lecture: The ‘Why & How‘ Principle: Moving Beyond Simple Statements
开发语言·前端·javascript
学逆向的25 分钟前
PE——RVA与FOA的转换
开发语言·网络安全·pe
zz-zjx29 分钟前
Python实用转换模板
开发语言·前端·python
zuozong_33 分钟前
C++类与对象
开发语言·c++·算法
lfSeanDragon38 分钟前
数据结构-前缀树(Trie)
开发语言·c#
励志不掉头发的内向程序员41 分钟前
【LibreCAD 2D架构】从两个坐标到图形实体:RS_ActionDrawLine如何创建RS_Line
开发语言·c++·qt·学习·系统架构