Предложение Resharper Page_Load = PageLoad

Обычно, когда обработчик событий Page_Load добавляется в файл кода Visual Studio (например, дважды щелкнув страницу в режиме конструктора), он выглядит следующим образом:

/// <summary>
/// Handles the Load event of the Page control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
protected void Page_Load(object sender, EventArgs e)
{
    // ...
}

Но Resharper предлагает Name 'Page_Load' does not match rule 'Methods, properties and events'. Suggested name is 'PageLoad'. Я предполагаю, что есть лучший способ определить обработчик для загрузки страницы, но я не могу вспомнить, что такое синтаксис, но я полагаю, что это разрешит это предупреждение Resharper?

Возможно, что-то вроде:

/// <summary>
/// Raises the <see cref="E:System.Web.UI.Control.Load"/> event.
/// </summary>
/// <param name="e">The <see cref="T:System.EventArgs"/> object that contains the event data.</param>
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    // ...
}

но мне кажется, что OnLoad и PageLoad не совсем то же самое?

Ответы

Ответ 1

OnLoad и Page_Load , по существу, одинаковы. Page_Load вызывается через отражение, если AutoEventWireup включен в Page. OnLoad - это защищенный виртуальный метод класса Control (который наследует класс Page).

Смотрите Inside AutoEventWireup для углубленного анализа работы AutoEventWireup и того, почему он существует.

В сообществе StackOverflow также есть вход on лучше для обработки события Load или переопределения метода OnLoad.

Ответ 2

Просто для полноты я подумал, что добавлю здесь ответ, который вы получили от одного "Дэвида Бенсона" когда вы спросили на jetbrains.net:

Если вы перейдете к параметрам ReSharper, в разделе Языки выберите С# Naming Style. Выберите кнопку "Дополнительные настройки..." и в Event subscriptions on fields:, удалите On перед $event$, чтобы она была $object$_$event$. Это должно удалить предупреждение.

Для меня это самый простой способ успокоить ReSharper перед большой существующей кодовой базой веб-приложений.

Ответ 3

Это ошибка в ReSharper 6.0 и ниже. В 6.1 это исправлено. Для обработчиков AutoEventWireup не предполагается, что какие-либо изменения не имеют значения, какие у вас есть параметры именования.