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

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

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