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

推荐订阅源

The GitHub Blog
The GitHub Blog
I
InfoQ
U
Unit 42
WordPress大学
WordPress大学
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
月光博客
月光博客
D
Docker
Stack Overflow Blog
Stack Overflow Blog
D
DataBreaches.Net
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
V
Visual Studio Blog
博客园 - 聂微东
A
About on SuperTechFans
腾讯CDC
Jina AI
Jina AI
Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
博客园 - 【当耐特】
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
M
MIT News - Artificial intelligence

博客园 - 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:)");
  }
 }
}
/****************************运行结果***************************/