.NET插件开发

.NET插件开发,.net,add-in,.net,Add In,我正在编写一个程序,允许开发人员为它编写插件,我希望开发人员能够钩住程序中发生的事件 我的代码没有编译,因为我无法在IMyProgram接口中声明委托 所以我想这更像是一个设计问题。如何将接口传递给加载项,以便加载项可以挂接程序事件 [AddInContract] public interface IMyProgramAddInContract : IContract { /// <summary> /// Initializes AddIn

我正在编写一个程序,允许开发人员为它编写插件,我希望开发人员能够钩住程序中发生的事件

我的代码没有编译,因为我无法在IMyProgram接口中声明委托

所以我想这更像是一个设计问题。如何将接口传递给加载项,以便加载项可以挂接程序事件

[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";
        }
    }

IMyProgram正在为委托和事件声明公共范围。删除它们,我认为您将能够编译

IMyProgram正在为委托和事件声明公共范围。删除它们,我认为您将能够编译

如果您希望为您的加载项实现事件模型,那么您应该使用委托而不是接口-查看MSDN中的此简介,看看它是否清除了任何内容:


如果您希望为您的加载项实现事件模型,那么您应该使用委托而不是接口-查看MSDN中的此宣传语,看看它是否清除了任何内容:


问题已经解决了


我不知道委托可以在命名空间级别声明,而不在类中。

问题已经解决

我不知道委托可以在命名空间级别声明而不在类中