Предложение 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 не предполагается, что какие-либо изменения не имеют значения, какие у вас есть параметры именования.