插件式开发

自己做个笔记:


List<object> plugins=new List<object>{};  //存放插件的列表

string path=DLL文件夹路径;

string[] files=所有的DLL数组;

foreach(string dllFile in files) //遍历每一个DLL

{

  Assembly ably=Assembly.LodeFile(dllFile);

  Type[] types=ably.GetTypes();

   foreach(Type t in types )

   {

      if(t.GetInterface("接口名称")!=null) //此类继承了指定的接口

     {

         Button btn=new Button();

         plugins.add(ably.CreateInterface(t.FullName));

          btn.Tag=t.FullName;

         //添加 btn 到指定窗体

     }

     bingBtnEvents(); // 为 btn 绑定事件

   }

}


private  void bingBtnEvents()

{

 string fullName=btn.Tag.toString();

 foreach(var v  in plugins)

  {

    object obj =v as object;

    Type t=obj.GetType();

    if(t.FullName==fuleName)

   {

     MethodInfo info=t.GetMetgod("方法名称");

     info.Invoke(obj,null);

   }

 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值