Есть простое решение; вместо публичной собственности используйте публичное мероприятие!
public delegate void ServerValidateHandler(object sender, EventArgs e);
public event ServerValidateHandler ServerValidate;
ASP.NET предоставит событие с префиксом «Вкл.», Поэтому «ServerValidate» станет «OnServerValidate»
Например, в ASPX или ASCX вы должны ввести: OnServerValidate = "MyMethod" где MyMethod - это пользовательский метод, который вы хотите выполнить, и он имеет подпись, определенную делегатом ServerValidateHandler:
protected void MyMethod(Object sender, EventArgs e)
{
// do something...
}
Если вы хотите передать специальную информацию своему обработчику, вы можете создать свой собственный класс eventargs (например, MyEventArgs: EventArgs ) и обновить делегат для передачи этого типа вместо EventArgs.
Если вам нужен сам доступ к обработчику, вы можете сделать следующее (этот код предполагает, что будет использоваться не более одного метода обратного вызова, но вы можете изменить его, чтобы разрешить больше, используя вместо этого набор обработчиков):
public delegate void ServerValidateHandler(object sender, EventArgs e);
private ServerValidateHandler _handler;
public event ServerValidateHandler ServerValidate
{
add { _handler = value; }
remove { _handler = null; }
}
Конечно, если вам не нужны какие-либо из этих дополнений, то это упрощается до:
public event EventHandler ServerValidate;