Condividi tramite


ASP0006: non usare numeri di sequenza non letterali

Valore
ID della regola ASP0006
Categoria Uso
La modifica è dirompente o non dirompente Non separabile

Causa

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

Descrizione della regola

BlazorL'algoritmo di diffing dell'interfaccia utente si basa sui numeri di sequenza per determinare quali elementi sono stati modificati. Calcolare il numero di sequenza in modo dinamico o utilizzare un contatore può portare a prestazioni scarse nel confronto delle differenze. 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 sopprimere un avviso da questa regola. L'uso di un numero di sequenza non letterale può comportare una riduzione delle prestazioni.