2008-12-28 72 views
1

我正在編寫一個程序,允許開發人員爲它編寫AddIn,並且我希望開發人員能夠將鉤入程序中發生的事件。.NET AddIn開發

我的代碼不能編譯,因爲我無法在IMyProgram接口中聲明委託。

所以我想這是更多的設計問題。你將如何獲得傳遞給AddIn的接口,以便AddIn可以掛鉤到程序事件中?

[AddInContract] 
    public interface IMyProgramAddInContract : IContract { 

     /// <summary> 
     /// Initializes AddIn 
     /// </summary> 
     void Init(IMyProgram instance); 

     System.Drawing.Image AddInIcon { get; } 

     String DisplayName { get; } 

     String Description { get; } 
    } 

    [AddInContract] 
    public interface IMyProgram : IContract { 

     public delegate EventHandler EmailEventHandler(object sender, EmailEventArgs args); 

     public event EmailEventHandler BeforeCheck; 
     public event EmailEventHandler AfterCheck; 
     public event EmailEventHandler EmailDownloaded; 
     public event EmailEventHandler OnProcessMessage; 

    } 

    [AddInBase] 
    public class EmailEventArgs : EventArgs { 

     public override string ToString() { 
      return "todo"; 
     } 
    } 

回答

3

問題已解決。

我不知道委託可以在名稱空間級別聲明,而不需要在類中。

1

IMyProgram正在爲委託和事件聲明公共的範圍。刪除他們,我想你將能夠編譯

+0

沒有工作。接口不能聲明類型:( – 2008-12-28 07:49:44