我正在编写一个程序,允许开发人员为其编写插件,我希望开发人员能够挂钩程序中发生的事件。
我的代码未编译,因为我无法在 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";
}
}