2009-08-14 4 views
2

나는 LoadControl(String)을 사용하여 숫자 UserControl을 동적으로 만들고 각각의 이벤트에 구독하려고합니다.익명 메소드를 사용하여 이벤트를 동적으로 구독하는 방법은 무엇입니까?

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

그래서 내 페이지 로딩 이벤트에 다음을 수행하십시오 :

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! 
} 

방법에 deleagte을 가입 할

내 모든 컨트롤은 일반적인 Event의 구현을 필요로 공통 Interface을 상속 이번 행사?

답변

5

변경 Action<object, ObjectProcessedEventArgs>EventHandler<ObjectProcessedEventArgs>에 :

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

암시 적으로 형식 '액션 <개체, ObjectProcessedEventArgs>'변환 할 수 없습니다 '이벤트 핸들러를 ' – abatishchev

+0

대표의 명시 적 declartion (개체를 보낸 사람, ObjectProcessedEventArgs 전자)를 생성 입력 유형으로 사용하십시오. – Dewfy

관련 문제