惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
腾讯CDC
D
Docker
G
Google Developers Blog
D
DataBreaches.Net
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
The Cloudflare Blog
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
量子位
美团技术团队
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - samuel's blog

想了很久,我决定换BLOG了. FANSMI音乐下载器原理 启动带参数的线程 哈,俺又回来了! [转]利用XMLHTTP无刷新自动实时更新数据 [转]SYN Flood的C++程序 - samuel's blog 觉得我的BLOG“好像”冷了哦! 师兄写的一个JAVA播放器的源代码 向面连接的ADO.NET 水晶报表的使用技巧 无聊,,,,,吼两声!!!!!!!!!!!!!!! 按需要生成你的"网站导航"栏 ASP.NET中使用托管组件 无聊之极的无聊之“作”,C#加密程序 八种和电脑相关的易发病 最近不更新啦! 看完了没一个能活下的,都笑死了[转] SQL SERVER的视图、存储过程等 国产门户网站和思想强奸!
[原创]在C#中实现插件编程
samuel's blog · 2006-06-07 · via 博客园 - samuel's blog

在程序写好后,我们如果要不断的升级程序的功能的话,用以前的思想来写程序的话,办法就只有不断的添加、更改主程序的代码,难道就没有其他的办法了吗?答案是肯定有的。那么怎么实现呢?——插件!
对,就是插件,就好像我们的Eclipse,那就是用插件“搭”出来的程序,利用插件,我们可以很方便的对程序的功能进行添加、修改、而不用重编译整个工程,这个就是利用插件技术的好处!下面写出我在实际开发中利用到的一些方法,我将它们整理了一下,供大家看。。。。(这里只是动态加载一个类的例子!其他的程序集以此类推!)

/********************************* 主程序 *****************************/
   // 加载类所在的程序集
   Assembly assembly = Assembly.LoadFrom("C:\\maxun\\Test.dll");
   Type type = assembly.GetType("Test.OutString");
   // 得到指定的方法
   MethodInfo met = type.GetMethod("OutSuccess");
   // 创建实例
   Object obj=System.Activator.CreateInstance(type);
   // 调用方法
   string strResult = (string)met.Invoke(obj, null);

   // 如果这个方法有参数的话,可以用以下的方法实现
   /*
   Object[] objArray=new object[7];
   objArray[0]="参数1";
   objArray[1]="参数2";
   objArray[2]="参数3";
   …………
   
   *** Result = (***)met.Invoke(obj, objArray);
   */
/********************************* 类代码 *****************************/
using System;

namespace Test
{
 public class OutString
 {
  public OutString()
  {
  }

  public string OutSuccess()
  {
   return("SUCCESS:)");
  }
 }
}
/****************************运行结果***************************/