2010-09-10 7 views
14

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

/// <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 не совсем то же самое?

ответ

8

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

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

StackOverflow сообщество также имеет некоторые inputonwhetheritisbetter обрабатывать Load событие или переопределить метод OnLoad.

+1

Это полезная ссылка с хорошим объяснением. веселит. :) –

44

Просто для полноты картины я думал, что я хотел бы добавить здесь ответ, который вы получили от одного «Дэвида Бенсона» when you asked on jetbrains.net:

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

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

+2

ИМХО, это правильный ответ на вопрос (+1, потому что это помогло мне) –

+0

Согласен. Это более простое решение проблемы. Похоже на ошибку в R # для меня, что по умолчанию она не будет предупреждать, если вы используете Page_OnLoad. – comecme

+0

beauty, эта проблема прослушивала меня в течение нескольких месяцев, и я никогда не потрудился ее искать. Это избавляет от предупреждений для Page_Load Page_Init и т. Д., Но сохраняет предупреждения для всех других предупреждений в такте. Спасибо! –

0

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

Смежные вопросы