在C#中实现插件编程
2006-10-11 19:05
351 查看
在程序写好后,我们如果要不断的升级程序的功能的话,用以前的思想来写程序的话,办法就只有不断的添加、更改主程序的代码,难道就没有其他的办法了吗?答案是肯定有的。那么怎么实现呢?——插件!
对,就是插件,就好像我们的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:)");
}
}
}
/****************************运行结果***************************/
对,就是插件,就好像我们的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:)");
}
}
}
/****************************运行结果***************************/
相关文章推荐
- [原创]在C#中实现插件编程
- C#下的Raw Socket编程实现网络封包监视
- 深入浅出Dll( 函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- 显式接口实现(C# 编程指南)
- C#实现插件的模式
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分
- Telnet协议详解及使用C# 用Socket 编程来实现Telnet协议【转】
- C#编程实践—EventBroker简单实现
- 如何动态加载控件以及插件编程思想(C#)
- [转]c#登陆实现验证码-图形编程
- Visual C# .Net环境中编程实现浮动工具栏
- 在C#程序中实现插件架构
- 【C#代码】编程实现多少天中有多少周零几天
- 如何动态加载控件以及插件编程思想(C#)
- C#一步一步实现插件框架的示例(四)
- 黑马程序员之C#编程基础学习笔记:用while break实现要求用户输入用户名和密码,只要不是admin,888888就一直提示要求重新输入。
- 趣味编程:C#中Specification模式的实现
- C#学习笔记28——C# 插件编程
- C#中Socket通信编程的同步实现
- c#基于socket编程实现简单多人聊天程序