1

開発者がアドインを作成できるようにするプログラムを作成しています。開発者がプロ​​グラムで発生するイベントにフックできるようにしたいと考えています。

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

3 に答える 3

3

アドインにイベント モデルを実装しようとしている場合は、インターフェイスの代わりにデリゲートを使用する必要があります。MSDN のこの宣伝文句をチェックして、問題が解決するかどうかを確認してください。

インターフェイスの代わりにデリゲートを使用する場合 (C# プログラミング ガイド)

于 2008-12-28T08:35:30.087 に答える
3

問題は解決しました。

クラスに属さずに名前空間レベルでデリゲートを宣言できるとは思いもしませんでした。

于 2008-12-28T08:37:59.163 に答える
1

IMyProgram は、デリゲートとイベントの public のスコープを宣言しています。それらを削除すると、コンパイルできると思います

于 2008-12-28T07:37:31.047 に答える