0

デリゲートベースのイベント処理でパラメーターとして明示的に指定せずに「送信者」の参照を送信することは可能ですか?

いくつかのイベントを発生させる内部クラスがあり、テスト目的でイベントを明示的に呼び出したいと考えています。

public class Manager {
    public class DataStruct {
        public int Id { get; private set; }
        public event EventHandler Event1; // Can't be called by other classes
        public void fireEvent1(Event1();} // So another caller...

        // Delegates *can* be called by other classes
        public delegate void DelegateHandler(DataStruct sender);
        public DelegateHandler NewEvent;

        public void DelegateHandler(DataStruct sender) {
            MessageBox.Show(string.Format(
                "{0} raises event", sender.Id));
        }
    }
}

// Form1 ///////////////////////////////////////////////////////////////////
partial class Form1 {
    Manager.DataStruct dsRaiser, dsListener;

    private void Form1_Load(object sender, EventArgs e) {
        dsRaiser.Event1 += dsListener.SOME_HANDLER;
        dsRaiser.NewEvent += dsListener.DelegateHandler;
    }
    private void button1_Click(object sender, ...) {
        dsRaiser.fireEvent1(); // No argument needed but fireEvent1, not Event1().
    }
    private void button2_Click(object sender, ...) {
        dsRaiser.NewEvent(dsRaiser); // Way to omit parameter dsRaiser?
    }        
//////////////////////////////////////////////////////////////////////////
4

1 に答える 1