前面的文章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 - 插件标记实现相关推荐

  1. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 文章汇总及学习指南...

    一.AgileEAS.NET平台简介 AgileEAS.NET平台是一套应用系统快速开发平台,用于帮助中小软件开发商快速构建自己的企业信息管理类开发团队,以达到节省开发成本.缩短开发时间,快速适应市场 ...

  2. 基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET - 系统架构

    本文是继AgileEAS.NET应用开发平台介绍及AgileEAS.NET之敏捷并行开发方法所做的架构补充,用于阐释AgileEAS.NET平台的架构设计思路. 说起了系统架构,我也无法给出系统架构的 ...

  3. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - ActiveXForm运行容器...

    前面的文章AgileEAS.NET之插件运行容器中对基于WinForm和WebForm技术的容器做了个简单的介绍,接下来,我们介绍一下WinForm和WebForm技术结合的容器ActiveXForm ...

  4. 随笔 - 142 文章 - 0 评论 - 2294 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 权限管理...

    前面我们在AgileEAS.NET之插件接口IModule和AgileEAS.NET之插件运行容器中对模块插件和运行容器都做了介绍,我们知道,在运行容器中,我们要基于模块插件并结合账户/角色进行权限判 ...

  5. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 实现插件...

    插件契约介绍 我们知道,要基于平台(容器)加插件的这种模式进行开发,我们必须定义一组契约,用于约束模块插件开发,也就是说,模块插件需要遵守一定的标准进行开发,才能正常被容器调用,这就是IModule所 ...

  6. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 权限管理

    前面我们在AgileEAS.NET之插件接口IModule和AgileEAS.NET之插件运行容器中对模块插件和运行容器都做了介绍,我们知道,在运行容器中,我们要基于模块插件并结合账户/角色进行权限判 ...

  7. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 对象控制反转

    控制反转,即IOC(Inversion of Control),也叫反转模式,也称依赖注入DI(Dependency Injection)模式,关于此概念的解释我在此文不做过讲说明. 对于设计模式类的 ...

  8. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - ActiveXForm在线体验安全设置...

    AvtiveXForm在线演示地址:http://demo.smarteas.net/activexform/,如果是第一次体验演示,请在体验前确保安装了安装.NET2.0 和Activexform客 ...

  9. LR.net敏捷软件开发平台核心功能详解

    软件开发,程序员就是不断地跟变量.方法.类.接口这些东西打交道,随着开发经验的积累,很多程序员会发现,虽然最终开发出来的软件每个都不一样,但是在开发过程中用到的很多东西却又是相通的.例如,每个软件的底 ...

最新文章

  1. 打造全能的文本编辑器序列文章
  2. 当一个事情过度的艳丽的时候就是一个衰败的开始
  3. 计算机在气象上的应用浅论,简析计算机网络在气象服务中的应用原稿
  4. spring的aop准备工作-导包定义通知
  5. javaScript获取url中的参数
  6. java静态工厂方法模式_设计模式:简单工厂模式(静态工厂方法模式)
  7. FD.io VPP 20.05 官方文档 总目录:用户文档+开发文档+命令行
  8. node sqlite 插入数据_Python基础系列讲解——如何使用自带的SQLite数据库
  9. C# MD5 加密算法
  10. iptv组播和单播的区别
  11. 数据链路层LLDP协议
  12. java实现即时通讯_java实现WebSocket即时通信
  13. 使用PS给PDF文件加水印
  14. 兰大计算机考研经验,兰州大学电子与通信工程考研经验分享
  15. python nginx部署_nginx部署python应用
  16. ubuntu修改登陆用户名称_Ubuntu-修改计算机名(hostname)和修改用户名
  17. AtCoder Beginner Contest 205D题Kth Excluded(差分+二分)
  18. echart 报表统计
  19. webview拦截请求
  20. npm包管理工具与ES6官方模块化规范

热门文章

  1. 中级统计师基础知识中计算机,2009年全国中级统计专业技术资格考试大纲
  2. markdown数学公式全集
  3. while循环的习题
  4. Django 分页器模板
  5. kerberos简单介绍
  6. 【BZOJ】4873: [Shoi2017]寿司餐厅
  7. .NET Core 配置Configuration杂谈
  8. Android 自定义Toast实现多次触发只会显示一次toast
  9. 我的实用设计模式 - Simple Factory和Reflection
  10. Spark Scala语言学习系列之完成HelloWorld程序(三种方式)