2009-08-14 7 views
2

LoadControl(String)を使用してUserControlの番号を動的に作成し、それぞれのイベントに登録したいと考えています。匿名メソッドを使用してイベントを動的に購読するには?

すべての私のコントロールは、共通のEventの実装を必要と共通Interfaceを継承します。

public interface IObjectProcessor 
{ 
    event EventHandler<ObjectProcessedEventArgs> ObjectProcessed; 
} 

だから私は私のページの読み込みイベントに次の操作を行います。

にdeleagteをサブスクライブする方法
protected void Page_Load() 
{ 
    switch(Request["type"]) 
    { 
    case "user": 
    { 
     LoadControl("AddUser.ascx", delegate(object sender, ObjectProcessedEventArgs e) 
     { 
      // do something 
     }); 
     break; 
    } 
    } 
} 

private void LoadControl(string path, Action<object, ObjectProcessedEventArgs> action) 
{ 
    var control = (IObjectProcessor)LoadControl(path) 
    control.ObjectProcessed // here! 
} 

このイベント? EventHandler<ObjectProcessedEventArgs>

答えて

5

変更Action<object, ObjectProcessedEventArgs>

private void LoadControl(string path, EventHandler<ObjectProcessedEventArgs> handler) 
{ 
     var control = (IObjectProcessor)LoadControl(path) 
     control.ObjectProcessed += handler; 
} 
-1
control.ObjectProcessed += action 
+0

は、暗黙的に型 'アクション<オブジェクト、ObjectProcessedEventArgsは、>' 'のEventHandler ' に変換できません – abatishchev

+0

デリゲート(オブジェクト送信者、ObjectProcessedEventArgs E)の明示的なdeclartionを作成入力タイプとして使用する – Dewfy

関連する問題