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

新建一个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# WPF如何反射加载Geometry几何图形数据图标
# c# WPF中自定义加载时实现带动画效果的Form和FormItem
# c# 实现网页加载后将页面截取为长图片
# C# 根据表格偶数、奇数加载不同颜色
# C# 动态加载程序集信息
# C#中调用DLL时未能加载文件或程序集错误的处理方法(详解)
# C#中加载dll并调用其函数的实现方法
# C#使用Jquery zTree实现树状结构显示 异步数据加载
# C#使用反射加载多个程序集的实现方法
# C#实现动态加载dll的方法
# c#动态加载卸载DLL的方法
# 3种C# 加载Word的方法
# 不带
# 给大家
# 新建一个
# 的是
# 都是
# 加载
# 如果你
# 还可以
# 遍历
# 也可
# 这两个
# 可以通过
# 希望能
# 就不能
# 在后面
# 这篇
# 后会
# 这样子
# 理论上
# 类似于
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
,在苏州找工作,上哪个网站比较好?
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
如何实现建站之星域名转发设置?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何基于云服务器快速搭建个人网站?
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
Bootstrap整体框架之JavaScript插件架构
如何在Windows虚拟主机上快速搭建网站?
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
EditPlus中的正则表达式 实战(4)
如何在云主机上快速搭建多站点网站?
如何快速搭建安全的FTP站点?
网站图片在线制作软件,怎么在图片上做链接?
如何破解联通资金短缺导致的基站建设难题?
Linux后台任务运行方法_nohup与&使用技巧【技巧】
微信公众帐号开发教程之图文消息全攻略
Laravel中的withCount方法怎么高效统计关联模型数量
大型企业网站制作流程,做网站需要注册公司吗?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
JS弹性运动实现方法分析
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
Laravel如何配置任务调度?(Cron Job示例)
Python文件操作最佳实践_稳定性说明【指导】
网站制作软件有哪些,制图软件有哪些?
Python并发异常传播_错误处理解析【教程】
昵图网官方站入口 昵图网素材图库官网入口
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
如何在建站之星绑定自定义域名?
音响网站制作视频教程,隆霸音响官方网站?
html如何与html链接_实现多个HTML页面互相链接【互相】
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
如何快速查询域名建站关键信息?
如何生成腾讯云建站专用兑换码?
教你用AI润色文章,让你的文字表达更专业
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
Firefox Developer Edition开发者版本入口
如何做网站制作流程,*游戏网站怎么搭建?
北京的网站制作公司有哪些,哪个视频网站最好?

