c # Делегаты через обратную передачу - PullRequest
0 голосов
/ 03 августа 2009

Когда я сохраняю делегата (который указывает на метод страницы) в состоянии сеанса, извлекаю его после обратной передачи и выполняю его, целью делегата является старый объект страницы, а не текущий, есть ли способ изменить цель делегата, чтобы он выполнял метод для объекта текущей страницы?

Я думал об использовании метода статической страницы, но тогда у меня нет доступа к элементам управления на странице, которая побеждает объект того, что я пытаюсь сделать, а именно обновить текстовое поле.

Ответы [ 3 ]

6 голосов
/ 03 августа 2009

Я немного нервничаю по этому поводу. Предложения Джона Скита и Мехрдада будут работать (конечно), но предполагается, что экземпляры страниц будут удалены после завершения запроса. Этот делегат может предотвратить это, что приведет к .Net-эквиваленту утечки памяти.

Возможно, вы могли бы использовать отражение и поместить объект System.Reflection.MethodBase или System.Reflection.MethodInfo в сеанс, чтобы вызывать его позже.

3 голосов
/ 03 августа 2009
delegateInstance.Method.Invoke(obj, arguments);
1 голос
/ 03 августа 2009

Заставьте вашего делегата принять новую страницу в качестве первого параметра, и при вызове ее передайте this.

...