Share via


ASP0006: non usare numeri di sequenza non letterali

Valore
ID regola ASP0006
Categoria Utilizzo
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione

Causa

Chiamata su un metodo in RenderTreeBuilder contenente un numero di sequenza che non è un valore letterale come parametro.

Descrizione regola

BlazorL'algoritmo di diffing dell'interfaccia utente si basa sui numeri di sequenza per determinare quali elementi sono stati modificati. Il calcolo del numero di sequenza in modo dinamico o l'uso di un contatore può comportare prestazioni insufficienti. Usare invece un numero di sequenza letterale mappato alla riga del codice sorgente per l'elemento. Ad esempio, il codice seguente genera un errore:

using Microsoft.AspNetCore.Components.Rendering;
var builder = new RenderTreeBuilder();
var seqNum = 1;
builder.OpenElement(seqNum, "div");
builder.CloseElement();

Come correggere le violazioni

Per correggere una violazione di questa regola, assicurarsi che le chiamate ai metodi nella RenderTreeBuilder classe che accettano un numero di sequenza come parametro usino un numero di sequenza letterale.

using Microsoft.AspNetCore.Components.Rendering;
var builder = new RenderTreeBuilder();
builder.OpenElement(0, "div");
builder.CloseElement();

Quando eliminare gli avvisi

Non eliminare un avviso da questa regola. L'uso di un numero di sequenza non letterale può comportare una riduzione delle prestazioni.