c# 动态加载dll文件,并实现调用其中的方法(推荐)
发布时间 - 2026-01-10 22:54:06 点击率:次以下是测试代码:

新建一个classlibrary,包含两个类class1和class2,这两个类中分别有一个方法,都是返回一个字符串,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace mydll
{
public class Class1
{
public Class1()
{
}
public string sayhello()
{
return "hello,word!";
}
}
public class Class2
{
public Class2()
{
}
public string saybeautiful()
{
return "beautiful,very good!";
}
}
}
在编译完成后会生成一个mydll.dll动态链接库,然后新建一个winform项目(其他也可以,调试用):
private void button1_Click(object sender, EventArgs e)
{
string path = @"D:\123\mydll\mydll\bin\Debug\mydll.dll";
//Byte[] byte1 = System.IO.File.ReadAllBytes(path);//也是可以的
//Assembly assem = Assembly.Load(byte1);
Assembly assem = Assembly.LoadFile(path);
//string t_class = "mydll.Class1";//理论上已经加载了dll文件,可以通过命名空间加上类名获取类的类型,这里应该修改为如下:
//string t_class = "mydll.Class1,mydll";//如果你想要得到的是被本工程内部的类,可以“命名空间.父类……类名”;如果是外部的,需要在后面加上“,链接库名”;
//再次感谢thy38的帮助。
//Type ty = Type.GetType(t_class);//这儿在调试的时候ty=null,一直不理解,望有高人可以解惑
Type[] tys = assem.GetTypes();//只好得到所有的类型名,然后遍历,通过类型名字来区别了
foreach (Type ty in tys)//huoquleiming
{
if (ty.Name == "Class1")
{
ConstructorInfo magicConstructor = ty.GetConstructor(Type.EmptyTypes);//获取不带参数的构造函数
object magicClassObject = magicConstructor.Invoke(new object[] { });//这里是获取一个类似于类的实例的东东
//object magicClassObject = Activator.CreateInstance(t);//获取无参数的构造实例还可以通过这样
MethodInfo mi = ty.GetMethod("sayhello");
object aa=mi.Invoke(magicClassObject, null);
MessageBox.Show(aa.ToString());//这儿是执行类class1的sayhello方法
}
if (ty.Name == "Class2")
{
ConstructorInfo magicConstructor = ty.GetConstructor(Type.EmptyTypes);//获取不带参数的构造函数,如果有构造函数且没有不带参数的构造函数时,这儿就不能这样子啦
object magicClassObject = magicConstructor.Invoke(new object[] { });
MethodInfo mi = ty.GetMethod("saybeautiful");
object aa = mi.Invoke(magicClassObject, null);//方法有参数时,需要把null替换为参数的集合
MessageBox.Show(aa.ToString());
}
}
//AppDomain pluginDomain = (pluginInstanceContainer[key] as PluginEntity).PluginDomain;
//if (pluginDomain != null)
//{
// AppDomain.Unload(pluginDomain);
// }
}
以上这篇c# 动态加载dll文件,并实现调用其中的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# c
# 动态加载dll
# C#中加载dll并调用其函数的实现方法
# C# 调用C++写的dll的实现方法
# PHP调用C#开发的dll类库方法
# C++调用C#的DLL实现方法
# C#调用C++dll方法步骤
# C++调用C#的DLL程序实现方法
# C#调用C类型dll入参为struct的问题详解
# 不带
# 给大家
# 新建一个
# 的是
# 都是
# 加载
# 如果你
# 还可以
# 遍历
# 也可
# 这两个
# 可以通过
# 希望能
# 就不能
# 在后面
# 这篇
# 后会
# 这样子
# 理论上
# 类似于
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
php结合redis实现高并发下的抢购、秒杀功能的实例
如何在IIS7中新建站点?详细步骤解析
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
香港服务器网站卡顿?如何解决网络延迟与负载问题?
香港服务器WordPress建站指南:SEO优化与高效部署策略
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
如何续费美橙建站之星域名及服务?
音乐网站服务器如何优化API响应速度?
如何在不使用负向后查找的情况下匹配特定条件前的换行符
Laravel如何使用模型观察者?(Observer代码示例)
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
bing浏览器学术搜索入口_bing学术文献检索地址
JavaScript中的标签模板是什么_它如何扩展字符串功能
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel定时任务怎么设置_Laravel Crontab调度器配置
node.js报错:Cannot find module 'ejs'的解决办法
高端建站如何打造兼具美学与转化的品牌官网?
iOS发送验证码倒计时应用
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
Android使用GridView实现日历的简单功能
在线制作视频网站免费,都有哪些好的动漫网站?
如何用花生壳三步快速搭建专属网站?
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
清除minerd进程的简单方法
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
如何快速搭建二级域名独立网站?
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
如何在万网自助建站中设置域名及备案?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
网站制作软件有哪些,制图软件有哪些?
详解MySQL数据库的安装与密码配置
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
如何用5美元大硬盘VPS安全高效搭建个人网站?
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
如何在腾讯云服务器上快速搭建个人网站?
下一篇:laravel怎么做静态页面缓存
下一篇:laravel怎么做静态页面缓存

