2009-08-03 3 views
0

대리인 (페이지 메서드를 가리키는)을 세션 상태로 저장하면 다시 게시 한 후 다시 게시하고 실행합니다. 대리인의 대상은 이전 페이지 개체가 아니라 현재 페이지 개체입니다. 어쨌든 델리게이트의 대상을 변경하여 현재 페이지 객체의 메서드를 실행합니까?C# 대리자가 다시 게시 전체에서

나는 정적 페이지 방법을 사용하는 것에 대해 생각해 봤지만, 나는 무엇을하려고하는지, 즉 텍스트 상자를 업데이트하는 페이지의 컨트롤에 접근 할 수 없다.

+1

나는 그것이 가능하다해도 전혀 권장하지 않는다는 강한 느낌을 가지고 있습니다. –

답변

1

대리인이 첫 번째 매개 변수로 새 페이지를 가져오고 전화 할 때 this을 전달하십시오.

+0

이것은 @ Mehrdad 's보다 나은 접근법처럼 보입니다. 코드를 읽을 때 의도를 얻는 것이 더 쉽기 때문입니다. – codekaizen

3
delegateInstance.Method.Invoke(obj, arguments); 
+0

당신은 정말 대단합니다! –

+0

이것은 최후의 수단으로 사용된다는 점에 유의하십시오. 대신 대리자를 ** 정적 ** 메서드에 사용하고 개체를 인수로 전달합니다. –

6

나는 이것에 대해 조금 긴장하고 있습니다. Jon Skeet과 Mehrdad의 제안은 물론 작동하지만 요청이 완료된 후 페이지 인스턴스가 삭제됩니다. 이 대리인은 메모리 누수와 동등한 .Net으로 이어지는 것을 막을 수 있습니다.

리플렉션을 사용하여 나중에 System.Reflection.MethodBase 또는 System.Reflection.MethodInfo 개체를 세션에 넣으면 나중에 호출 할 수 있습니다.

+0

이것은 당신이 진술 한 이유 때문에 긴장하게 만듭니다. 오히려 전체 페이지가 아니라 우리가 신경 쓰고있는 국가의 일부만 유지할 것입니다. –

관련 문제