基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 插件标记实现
前面的文章AgileEAS.NET之插件接口IModule对插件的基本契约宝义也就是接口做了一个介绍,本文将提供另一种模块插件的定义,采用属性标记插件。
我们定义了ModuleAttribute属性:
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;}}
及ModuleRunAttribute属性
ModuleRunAttribute /// <summary>/// 模块入口方法属性。/// </summary>/// <remarks>/// 配合ModuleAttribute实现基于标记的IMoule模块。/// </remarks>[AttributeUsage(AttributeTargets.Method)]public class ModuleRunAttribute : Attribute{/// <summary>/// 初始化ModuleRunAttribute对象。/// </summary>public ModuleRunAttribute(){}}
我们只需要在我们要公共的模块插件的类打上ModuleAttributes标记、在模块的入口调用方法上打上ModuleRunAttribute就可以了,以下为示例:
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...");}}
在以上例子中,我们标记了一个模块插件,他的GUID属性为“CB58C5BB-5D15-4a17-802E-341F9F65F35C”,模块名称为Hello例子,入口方法为Start方法,特别声明一下,Start必须为一公共为参该当,Web模块不需要入口方法。
链接:AgileEAS.NET应用开发平台介绍
AgileEAS.NET之敏捷并行开发方法
敏捷软件工程实验室
转载于:https://www.cnblogs.com/eastjade/archive/2010/06/30/1768558.html
基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 插件标记实现相关推荐
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 文章汇总及学习指南...
一.AgileEAS.NET平台简介 AgileEAS.NET平台是一套应用系统快速开发平台,用于帮助中小软件开发商快速构建自己的企业信息管理类开发团队,以达到节省开发成本.缩短开发时间,快速适应市场 ...
- 基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET - 系统架构
本文是继AgileEAS.NET应用开发平台介绍及AgileEAS.NET之敏捷并行开发方法所做的架构补充,用于阐释AgileEAS.NET平台的架构设计思路. 说起了系统架构,我也无法给出系统架构的 ...
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - ActiveXForm运行容器...
前面的文章AgileEAS.NET之插件运行容器中对基于WinForm和WebForm技术的容器做了个简单的介绍,接下来,我们介绍一下WinForm和WebForm技术结合的容器ActiveXForm ...
- 随笔 - 142 文章 - 0 评论 - 2294 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 权限管理...
前面我们在AgileEAS.NET之插件接口IModule和AgileEAS.NET之插件运行容器中对模块插件和运行容器都做了介绍,我们知道,在运行容器中,我们要基于模块插件并结合账户/角色进行权限判 ...
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 实现插件...
插件契约介绍 我们知道,要基于平台(容器)加插件的这种模式进行开发,我们必须定义一组契约,用于约束模块插件开发,也就是说,模块插件需要遵守一定的标准进行开发,才能正常被容器调用,这就是IModule所 ...
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 权限管理
前面我们在AgileEAS.NET之插件接口IModule和AgileEAS.NET之插件运行容器中对模块插件和运行容器都做了介绍,我们知道,在运行容器中,我们要基于模块插件并结合账户/角色进行权限判 ...
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 对象控制反转
控制反转,即IOC(Inversion of Control),也叫反转模式,也称依赖注入DI(Dependency Injection)模式,关于此概念的解释我在此文不做过讲说明. 对于设计模式类的 ...
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - ActiveXForm在线体验安全设置...
AvtiveXForm在线演示地址:http://demo.smarteas.net/activexform/,如果是第一次体验演示,请在体验前确保安装了安装.NET2.0 和Activexform客 ...
- LR.net敏捷软件开发平台核心功能详解
软件开发,程序员就是不断地跟变量.方法.类.接口这些东西打交道,随着开发经验的积累,很多程序员会发现,虽然最终开发出来的软件每个都不一样,但是在开发过程中用到的很多东西却又是相通的.例如,每个软件的底 ...
最新文章
- 打造全能的文本编辑器序列文章
- 当一个事情过度的艳丽的时候就是一个衰败的开始
- 计算机在气象上的应用浅论,简析计算机网络在气象服务中的应用原稿
- spring的aop准备工作-导包定义通知
- javaScript获取url中的参数
- java静态工厂方法模式_设计模式:简单工厂模式(静态工厂方法模式)
- FD.io VPP 20.05 官方文档 总目录:用户文档+开发文档+命令行
- node sqlite 插入数据_Python基础系列讲解——如何使用自带的SQLite数据库
- C# MD5 加密算法
- iptv组播和单播的区别
- 数据链路层LLDP协议
- java实现即时通讯_java实现WebSocket即时通信
- 使用PS给PDF文件加水印
- 兰大计算机考研经验,兰州大学电子与通信工程考研经验分享
- python nginx部署_nginx部署python应用
- ubuntu修改登陆用户名称_Ubuntu-修改计算机名(hostname)和修改用户名
- AtCoder Beginner Contest 205D题Kth Excluded(差分+二分)
- echart 报表统计
- webview拦截请求
- npm包管理工具与ES6官方模块化规范