博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 插件开发
阅读量:5104 次
发布时间:2019-06-13

本文共 1448 字,大约阅读时间需要 4 分钟。

//1 定义插件接口,将其编译成 dll,例如:
using 
System;
  
namespace 
PluginInterface
{
 
public 
interface 
IShow
 
{
  
string 
Show() ;
 
}
}
  
  
//2 编写插件. 新建dll工程,并引用第一步做的dll插件,实现其接口,例如:
namespace 
PluginA
{
 
public 
class 
PluginA : PluginInterface.IShow
 
{
  
public 
string 
Show()
  
{
   
return 
"I am plugin A" 
;
  
}
 
}
}
//3. 在指定目录下寻找Dll文件
private 
void 
frmMain_Load(
object 
sender, System.EventArgs e)
{
    
//获取Plugins目录中所有的DLL文件,并保存在combo中
                    
try
    
{
        
string 
path = Application.StartupPath ;
        
path  = System.IO.Path.Combine(path,
"Plugins"
) ;
        
foreach 
string 
file 
in 
System.IO.Directory.GetFiles(path,
"*.dll"
))
        
{
            
this
.cmbPlugins.Items.Add(file) ;
        
}
    
}
    
catch 
(Exception ex)
    
{
        
MessageBox.Show(ex.Message ) ;
    
}
  
//
使用插件
privatevoid btnExecute_Click(object sender, System.EventArgs e) {
try {
//1. 获得 文件名称 string asmFile = this.cmbPlugins.Text ; string asmName = System.IO.Path.GetFileNameWithoutExtension(asmFile) ; if ( asmFile != string.Empty ) {
//2. 利用反射,构造DLL文件的实例 System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(asmFile) ; //3. 利用反射,从程序集(DLL)中,提取类,并把此类实例化 PluginInterface.IShow iShow = (PluginInterface.IShow) System.Activator.CreateInstance(asm.GetType(asmName + "Namespace." + asmName+"Class")) ; //4. 在主程序中使用这个类的实例 this.label2.Text = iShow.Show(); } } catch ( Exception ex ) {
MessageBox.Show(ex.Message ) ; } }

转载于:https://www.cnblogs.com/jiaocheng/p/4770848.html

你可能感兴趣的文章
json数据在前端(javascript)和后端(php)转换
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Groovy中那些神奇注解之ToString
查看>>
宇宙第一开发工具:vs2019 开发Python
查看>>
Tomcat Https配置
查看>>
检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法
查看>>
关于mybatis中基本类型条件判断问题
查看>>
RDD之二:原理
查看>>
Struts2.0 xml文件的配置(package,namespace,action)
查看>>
转载:【Oracle 集群】RAC知识图文详细教程(四)--缓存融合技术和主要后台进程
查看>>
2018-2019-2 网络对抗技术 20165301 Exp 9 Web安全基础
查看>>
待续--mysql中key 、primary key 、unique key 与index区别
查看>>
Day19内容回顾
查看>>
bootstrap分页
查看>>
洛谷 P1144 最短路计数 解题报告
查看>>
第七次作业
查看>>
c++map的用法
查看>>
js交互
查看>>
vim工具
查看>>
Openssl genrsa命令
查看>>