前面的文章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之敏捷並行開發方法
敏捷軟體工程實驗室