Стараются не проверять на пустые обработчики событий
Добавление пустого делегата в событиях в объявлении, подавляя потребность всегда проверить событие на пустой указатель прежде, чем звонить это является потрясающим. Пример:
public delegate void MyClickHandler(object sender, string myValue);
public event MyClickHandler Click = delegate {}; // add empty delegate!
Позволяют Вам сделать это
public void DoSomething()
{
Click(this, "foo");
}
Вместо этого
public void DoSomething()
{
// Unnecessary!
MyClickHandler click = Click;
if (click != null) // Unnecessary!
{
click(this, "foo");
}
}
, также посмотрите этот связанное обсуждение и этот сообщение в блоге Eric Lippert по этой теме (и возможные оборотные стороны).
Это будет как бы я с этим справился. Но не забудьте удалить строку из базы данных, когда вы закончите, и внедрить какой-то контроль наводнения. Я знаю, что существует множество (буквально) комбинаций для руководств, но выполнение простой проверки IP в зависимости от количества попыток за последние 5 минут и их блокировка после x попыток может помочь повысить безопасность сброса. Это станет более важным, чем больше будет ваша база пользователей и чем часто они забывают свои пароли.
Звучит отлично. Моя единственная рекомендация - использовать вычисленное значение вместо случайного идентификатора для ссылки электронной почты. Возможно, хешированная версия имени пользователя? Это чисто из-за моего презрения к случайным числам. :)