2010-09-10 12 views
14

Di solito, quando il gestore Page_Load evento viene aggiunta a un file codebehind da Visual Studio (ad esempio, fare doppio clic sulla pagina in modalità di progettazione), si finisce per guardare in questo modo:ReSharper suggerimento 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) 
{ 
    // ... 
} 

Ma ReSharper suggerisce Name 'Page_Load' does not match rule 'Methods, properties and events'. Suggested name is 'PageLoad'. Sto indovinando c'è un modo migliore per definire il gestore per il caricamento della pagina, ma non riesco a ricordare quale sia la sintassi, ma immagino che risolverebbe questo avvertimento di Resharper?

Forse qualcosa di simile:

/// <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); 
    // ... 
} 

ma mi sembra di ricordare che OnLoad e PageLoad non sono esattamente la stessa cosa?

risposta

8

OnLoad e Page_Loadsono essenzialmente lo stesso. Page_Load viene richiamato tramite reflection se AutoEventWireup è abilitato su Page. OnLoad è un metodo virtuale protetto della classe Control (che eredita la classe Page).

Vedere Inside AutoEventWireup per un'analisi approfondita di come funziona AutoEventWireup e perché esiste.

comunità Lo StackOverflow ha anche qualche inputonwhetheritisbetter di gestire l'evento Load o l'override del metodo OnLoad.

+1

Questo è un collegamento utile con una buona spiegazione. Saluti. :) –

44

Solo per completezza ho pensato che vorrei aggiungere qui la risposta che hai da un "David Benson" when you asked on jetbrains.net:

Se vai a Opzioni ReSharper, sotto Lingue selezionare C# Naming Style. Selezionare il pulsante Impostazioni avanzate ... e nello Event subscriptions on fields:, rimuovere On davanti a $event$, quindi è $object$_$event$. Questo dovrebbe rimuovere l'avviso.

Per me questo è il modo più semplice per posizionare ReSharper di fronte a una grande base di codice dell'applicazione Web esistente.

+2

IMHO, questa è la risposta corretta alla domanda (+1 perché mi ha aiutato) –

+0

Sono d'accordo. Questa è una soluzione più semplice al problema. Sembra un errore in R # per me che, per impostazione predefinita, non ti avviserà se usi Page_OnLoad. Bellezza – comecme

+0

, questo problema mi ha infastidito per mesi e non mi sono mai preso la briga di cercarlo. Questo elimina gli avvisi di Page_Load Page_Init ecc, ma mantiene gli avvisi per tutti gli altri avvisi in tatto. Grazie! –

0

È un errore in ReSharper 6.0 e versioni precedenti. In 6.1 è stato risolto. Per i gestori di AutoEventWireup non suggerirà alcuna modifica non importa quali impostazioni di denominazione sono disponibili.

Problemi correlati