IModule/// <summary> /// 插件接口定义。 /// </summary> public interface IModule:IPrivilegObject { /// <summary> /// 获取模块的名称。 /// </summary> /// <remarks>该值由开发者自己生成。</remarks> new string Name { get;} /// <summary> /// 获取模块的版本信息。 /// </summary> /// <remarks>该值为对象的版本信息,从程序集中读取,也可由开发者自己生成。</remarks> string Version { get;} /// <summary> /// 获取模块的开发者信息。 /// </summary> /// <remarks>该值为对象的开发组织或个人说明信息,从程序集中读取。</remarks> string Developer { get;} /// <summary> /// 获取模块的分组信息。 /// </summary> /// <remarks>该值为模块的分组,由开发人员定义,也可以在安装后定义。</remarks> string Group { get; } /// <summary> /// 获取模块的介绍。 /// </summary> /// <remarks>模块的介绍与说明信息,由开发人员定义,也可以在安装后定义。</remarks> string Description { get;} /// <summary> /// 获取对象的图标。 /// </summary> /// <remarks>对象的图标主要用于加载模块时用。</remarks> Image Icon { get;} /// <summary> /// 当功能模块成功启动后触发。 /// </summary> event System.EventHandler Started; /// <summary> /// 在关闭模块之前触发该事件。 /// </summary> event System.EventHandler Exited; /// <summary> /// 关闭当前模块。 /// </summary> void Close(); /// <summary> /// 运行当前模块。 /// </summary> /// <param name="parameters">模块运行的初始参数列表。</param> void Start(params object[] parameters); }
IPrivilegObject/// <summary> /// 系统权限对象的基本规范。 /// </summary> public interface IPrivilegObject { /// <summary> /// 获取权限对象的全局唯一标识符(GUID)。 /// </summary> /// <remarks>该值由实现类得到,默认值实现类的GUID值。</remarks> System.Guid Guid { get; } /// <summary> /// 获取对象权限对象所有者名称。 /// </summary> /// <remarks>该值用于说明权限所有者的名称。</remarks> string Name { get;} }
Calculatorclass Calculator:IModule { #region IModule 成员 public void Close() { } public string Developer { get { return "james/agilelab.cn"; } } public event EventHandler Exited; public string Group { get { throw new Exception("The method or operation is not implemented."); } } public System.Drawing.Image Icon { get { return null; } } public string ModuleName { get { return this.Name; } } public void Run(params object[] parameters) { try { System.Diagnostics.Process.Start("calc.exe"); } catch { } } public event EventHandler Started; public string Version { get { return System.Reflection.Assembly.GetAssembly(this.GetType()).GetName().Version.ToString(); } } #endregion #region IObject 成员 public string Assembly { get { return System.Reflection.Assembly.GetAssembly(this.GetType()).GetName().Name; } } public string Description { get { return "外部工具,计算器"; } } public string Type { get { return this.GetType().ToString(); } } #endregion #region IPrivilegObject 成员 public Guid Guid { get { return new Guid("4B538C7C-99BD-46aa-9244-C594239D354A"); } } public string Name { get { return "计算器"; } } #endregion #region IAddIn 成员 public void Start(params object[] parameters) { this.Run(parameters); } #endregion }
UserControl2public partial class UserControl2 : EAS.Windows.UI.Controls.ExplorerControl { public UserControl2() { InitializeComponent(); } public override Guid Guid { get { return new Guid("2B6F6C7F-2382-433f-87D7-D601CE378081"); } } public override string ModuleName { get { return "模块插件例子"; } } public override string Description { get { return "例子,还是例子"; } } public override void Run(params object[] parameters) { this.Message = "正在初始化插件..."; } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("来来来,大家一起玩"); } }
ModuleAttribute /// <summary> /// EAS.NET模块插件属性。 /// </summary> /// <remarks> /// 提供IModule的标记实现,提供基于属性标记的插件实现。 /// </remarks> [AttributeUsage(AttributeTargets.Class)] public class ModuleAttribute : Attribute { private Guid guid = System.Guid.Empty; private string name = string.Empty; private string description = string.Empty; /// <summary> /// 初始化ModuleAttribute对象。 /// </summary> /// <param name="guid">模块Guid。</param> /// <param name="name">模块名称。</param> public ModuleAttribute(string guid, string name) { this.guid = new Guid(guid); this.name = name; } /// <summary> /// 初始化ModuleAttribute对象。 /// </summary> /// <param name="guid">模块Guid。</param> /// <param name="name">模块名称。</param> /// <param name="description">模块说明。</param> public ModuleAttribute(string guid, string name,string description) { this.guid = new Guid(guid); this.name = name; this.description = description; } /// <summary> /// 模块Guid。 /// </summary> public string Guid { get { return this.guid.ToString(); } set { this.guid = new Guid(value); } } /// <summary> /// 模块名称。 /// </summary> public string Name { get { return this.name; } set { this.name = value; } } /// <summary> /// 模块说明。 /// </summary> public string Description { get { return this.description; } set { this.description = value; } } }
ModuleStartAttribute /// <summary> /// 模块入口方法属性。 /// </summary> /// <remarks> /// 配合ModuleAttribute实现基于标记的IMoule模块。 /// </remarks> [AttributeUsage(AttributeTargets.Method)] public class ModuleStartAttribute : Attribute { /// <summary> /// 初始化ModuleStartAttribute对象。 /// </summary> public ModuleStartAttribute() { } }
Hello /// <summary> /// 基于标记实现的插件。 /// </summary> [Module("CB58C5BB-5D15-4a17-802E-341F9F65F35C", "Hello例子", "基于标记的模块实现例子")] public class Hello { /// <summary> /// 入口方法。 /// </summary> [ModuleRun] public void Start() { MessageBox.Show("Hello..."); } public void Start2() { MessageBox.Show("Hello2..."); } }
IContainer /// <summary> /// 定义插件的运行容器接口。 /// </summary> public interface IContainer { /// <summary> /// 获取应用程序名称。 /// </summary> string Name { get;} /// <summary> /// 获取容器上下文环境。 /// </summary> IContext Context { get; } /// <summary> /// 获取容器的当前会话。 /// </summary> ISession Session { get; } /// <summary> /// 运行模块。 /// </summary> /// <param name="module">模块实例。</param> void StartModule(object module); /// <summary> /// 运行模块。 /// </summary> /// <param name="module">模块类型。</param> void StartModule(Type module); /// <summary> /// 运行模块。 /// </summary> /// <param name="module">模块Guid。</param> void StartModule(Guid module); /// <summary> /// 运行模块。 /// </summary> /// <param name="module">模块实例。</param> void StartModule(IModule module); /// <summary> /// 关闭模块。 /// </summary> /// <param name="module">模块实例。</param> void CloseModule(object module); /// <summary> /// 关闭当前模块。 /// </summary> void CloseModule(); /// <summary> /// 关闭模块。 /// </summary> /// <param name="module">模块实例。</param> void CloseModule(IModule module); }
/// <summary> /// 调试器启动类。 /// </summary> class AppStart { /// <summary> /// AgileEAS.NET调试器入口。 /// </summary> [STAThread] static void Main() { EAS.Develop.Debuger.Application.Start(); } }
![]() |
![]() |
![]() |
0人
|
了这篇文章 |
点击图片可刷新验证码请点击后输入验证码博客过2级,无需填写验证码
同时赞一个