C# delegados em postback
-
11-07-2019 - |
Pergunta
Quando eu guardo um delegado (que aponta para um método de página) no estado da sessão, recupere -o após um postback e executá -lo, o alvo do delegado é o objeto antigo da página e não o atual, existe de qualquer maneira para alterar o alvo do alvo do Delegado para que ele execute o método no objeto da página atual?
Pensei em usar um método de página estática, mas não tenho acesso aos controles na página que derrota o objeto do que estou tentando fazer, que é atualizar uma caixa de texto.
Solução
Faça seu delegado pegar a nova página como seu primeiro parâmetro, e quando você o chama de passar this
.
Outras dicas
Estou um pouco nervoso com isso. As sugestões de Jon Skeet e Mehrdad funcionarão (é claro), mas as instâncias da página devem ser descartadas após a conclusão de uma solicitação. Esse delegado pode estar impedindo que isso aconteça, levando ao .NET equivalente a um vazamento de memória.
Talvez você possa usar reflexão e colocar um System.Reflection.MethodBase
ou System.Reflection.MethodInfo
Objeto na sessão para invocar mais tarde.
delegateInstance.Method.Invoke(obj, arguments);