BlogWriter博客客户端-3 及 插件机制实现原理
来源:互联网 发布:破裂试验片的数据? 编辑:程序博客网 时间:2024/06/05 05:21
BlogWriter博客客户端-3 及 插件机制实现原理
BlogWriter 博客客户端 - 3
距上次写有关BlogWriter 文章已有好些天.
上篇文章简单介绍了 BlogWriter 是个什么东东.及其插件制作方法.
亦有朋友说 为何不用 wlw ? 怎么没用, 我也有用啊:-D , But 此文使用BlogWriter
做这个东东,兴趣而已.
现将其放在了CodePlex 上
http://blogwriter.codeplex.com/
BlogWriter 插件实现原理
1 定义接口
所有插件必须实现相应 接口(IPlugin)
IPlugin 接口定义了插件的基本信息, PlugBaseInfo 是的一个件信息的结构体.
及一个启动方法Sstart(). 此方法如同一个C#程序的一Main()方法,亦有其它类型的插件接口继承自此接口
主程序还将通过此接口检查插件的合法性.
public interface IPlugin
{
/// <summary>
/// 插件的基本信息
/// </summary>
PlugBaseInfo BaseInfo{get;}
/// <summary>
/// 插件应用的启动方法.加载插件时调用.
/// </summary>
/// <param name="FunctionMenuItem"></param>
void Start();
}
PlugBaseInfo 结构体
public struct PlugBaseInfo
{
/// <summary>
/// 插件名称,将在BlogWrite 程序的功能菜单显示
/// </summary>
public string Name;
/// <summary>
/// 插件的类型.宿主程序通过此属性确定插件类型
/// </summary>
public string Type;
/// <summary>
/// 插件图标
/// </summary>
public DW.Image Ico;
public string Readme;
}
IHost 接口 主程序继承自此接口, 接件通过此接口完成对主程序的访问.
为防上插件破坏主程序,插件通过此接口有限的访问主程序.
public interface IHost
{
ToolStripMenuItem FunctionMenu { get; }
string Editor_Value { get; set; }
}
2 反射调用
public string[] FindAssemblys()
首选搜索插件目录找到所有插件程序集.
{
string PlugsPath = Application.StartupPath + "//Plugins//";
string[] fis = IO.Directory.GetFiles(PlugsPath);
return fis;
}
然后加载找到的程序集
Assembly tmpAss = Assembly.LoadFile(filepath);
反射并实例插件对象.
//获取类型的构造函数信息
ConstructorInfo[] tmpConsInfos = tmpType.GetConstructors();
foreach (ConstructorInfo tmpConsInfo in tmpConsInfos)
{
//为构造函数生成调用的参数集合
.
:
:
//实例化对象
object tmpObj = tmpConsInfo.Invoke(tmpParams);
//
foreach (PropertyInfo tmpPropertiy in tmpType.GetProperties())
{
if (tmpPropertiy.Name == "BaseInfo")
{
try
{
IP.IPlugin instance = (IP.IPlugin)tmpObj;
PluginList.Add(instance);
//instance.Start();
}
catch
{
}
}
}
}
希望对朋友有帮助,若有不妥还请指正......
- BlogWriter博客客户端-3 及 插件机制实现原理
- .net实现 BlogWriter 博客客户端 - 2
- 我写的博客客户端-BlogWriter
- WordPress插件机制实现原理
- WordPress插件机制实现原理
- WordPress插件机制实现原理
- WordPress插件机制实现原理
- ntp原理及客户端实现
- 插件框架实现思路及原理
- Android 插件框架实现思路及原理
- 插件框架实现思路及原理
- pageHelper分页插件实现原理及使用方法
- Android binder 原理及实现机制<一>
- select机制的驱动实现及原理
- 插件化知识详细分解及原理 之Binder机制
- 插件化知识详细分解及原理 之Binder机制
- PHP插件机制原理
- php插件机制原理
- 黑客怎样攻破SQL服务器系统
- UBUNTU自动开启网络
- 什么是Pharming 如何避免Pharming威胁 http://article.pchome.net/content-499452-1.html
- 原创JS连锁泡泡 v1.1
- directshow啊!我心中的痛啊!
- BlogWriter博客客户端-3 及 插件机制实现原理
- 程序员的恋爱
- 教你如何才能打好WEB服务器安全攻坚战
- 【木友会专用】节目录制助手V2.0 (更新时间:2009-09-25)
- eaps
- jsp:include+filter
- 查找指定目录下的文件
- java Socket的怪异之处
- JSON学习总结