关于C#反射机制,自己写的

以下代码是我的项目中拷贝出来的,已通过测试成功,代码如下:

//首先建立一个抽象类,做为基类,试过用接口,但没有成功,所以放弃
//抽象类:

public abstract class IMCU05SConfig
{
public abstract bool AddMcu(HJEquipType equiptype, ZHNode node);
public abstract bool EditMcu(HJMCU mcu);
}

因为项目需要,是利用动态加载DLL的方式,需要自定义配置窗体,所以新建一个类库,将窗体写在当中,然后实现抽象类用于调用,代码如下:

复制代码
public class McuConfig : IMCU05SConfig
{

public override bool AddMcu(HJEquipType equiptype, ZHNode node)
{
FrmMcuConfig fmc
= new FrmMcuConfig();
fmc.ShowDialog();
return true;
}

public override bool EditMcu(HJMCU mcu)
{
FrmMcuConfig fmc
= new FrmMcuConfig();
fmc.ShowDialog();
return true;
}
}
复制代码

FrmMcuConfig就是需要调用的窗体,

用这个类库生成DLL,在主项目中进行调用,在调用前,程序先将dll文件放在程序启动目录下

调用代码如下:

复制代码
Assembly assembly = Assembly.LoadFile(Application.StartupPath + "\\" + fst.EquipType.ConfigDLL);
Type[] types
= assembly.GetTypes();
for (int i = 0; i < types.Length; i++)
{
if (types[i].IsSubclassOf(typeof(IMCU05SConfig)))
{
ConstructorInfo ci
= types[i].GetConstructor(new Type[0]);
IMCU05SConfig sport
= (IMCU05SConfig)ci.Invoke(new Object[0]);
bool b = sport.AddMcu(fst.EquipType, fsn.Node);
return;
}
}
MessageboxX.ShowError(fst.EquipType.EquipName
+ "类型的管理模块Dll文件引用错误!!请检查 " + fst.EquipType.EquipName + "设备类型");
return;
}
复制代码
成功调用

posted @   biubiubiu  阅读(252)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
阅读排行:
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 本地部署 DeepSeek:小白也能轻松搞定!
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)
点击右上角即可分享
微信分享提示