제 질문은 대리인의 일부로 호출되는 메서드를 통해 특성을 검색하는 것과 관련됩니다. [예 : Page.OnLoad 또는 Button_Click] _Page_Load 메서드를 통해 null을 반환합니다.
I 가지고 방법 _ _ [AnyWebControl_Event 상기 _ [를 Page_Load] _ 또는 위에 [MyMethodAttribute (PropertyOne, PropertyTwo)] 때문이다. 이 메소드 속성은 런타임에 메소드가 배치 된 메소드에 대해 조회해야합니다. 이 방법은 모든 웹 페이지의 코드 숨김에 있습니다. 모든 웹 페이지는 BaseWebPage에서 파생됩니다. 이벤트는 페이지로드 또는 포스트 백 이벤트가 될 수 있습니다. 이벤트가 페이지로드 또는 포스트 백에 의해 트리거되었는지 여부에 따라 컨트롤 [페이지 또는 포스트 백]에 대한 핸들을 얻고 [MyMethod] 메소드를 추가하여 실행합니다.
_eventControl = GetPostBackControl(page); //__EVENTTARGET or any control
if (_eventControl != null) // this is a postback control for any page
{
_eventControl.Load += new EventHandler(MyMethod);
}
else // this is PageLoad method for any page
{
_eventControl = page;
page.Load += new EventHandler(MyMethod);
}
그 후, 나는 이벤트 [예. Page_Load]가 발생했습니다. 여기서 메소드에 대한 핸들을 얻을 수 없으며 그 주위에서 다른 방법으로 시도했습니다.
로드 중 또는 다시 게시를 트리거 한 이벤트 대리자를 쿼리하는 방법 중 하나가있었습니다. 하지만 이벤트는 클래스 외부에서 액세스 할 수 없기 때문에 사용할 수 없습니다. MyDelegate.GetInvocationList() null로 반환합니다.
도움을 주시면 감사하겠습니다. 좀 더 노력 후
, 나는 __EVENTARGUMENT 나에게 메소드 이름을 제공 할 것입니다 것으로 나타났습니다. 지금 다른 문제가 있습니다. Page_Load 메서드의 ASPX 페이지를 반영하면 null이 반환됩니다. 아이디어가 있으십니까?
Page_load는 protected 메서드이며 Public BindingFlags를 사용하고있었습니다. 그래서 NonPublic | 인스턴스 플래그 재 지정을 사용하여 Page_Load 메소드를 사용할 수 있습니다
문제점에 대한 해결책을 찾았습니다. Page_Load 메서드가 보호되어 있고 공용 바인딩 플래그를 사용하고있었습니다. 내 문제가 해결되었습니다. – ank07