Dela via


ASP0006: Använd inte icke-literala sekvensnummer

Värde
Regel-ID ASP0006
Kategori Användning
Korrigeringen är antingen brytande eller icke-brytande Oskiljbar

Orsak

Ett anrop på en metod i RenderTreeBuilder med ett sekvensnummer som inte är en literal som parameter.

Regelbeskrivning

BlazorAlgoritmen för gränssnittsdiffing förlitar sig på sekvensnummer för att avgöra vilka element som har ändrats. Att beräkna sekvensnumret dynamiskt eller med hjälp av en räknare kan leda till dåliga prestanda. Använd i stället ett literalsekvensnummer som mappar till källkodsraden för elementet. Följande kod genererar till exempel ett fel:

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

Så här åtgärdar du överträdelser

Om du vill åtgärda en överträdelse av den här regeln kontrollerar du att anrop till metoder i RenderTreeBuilder klassen som tar ett sekvensnummer som en parameter använder ett literalsekvensnummer.

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

När du ska ignorera varningar

Utelämna inte en varning från den här regeln. Om du använder ett icke-literalt sekvensnummer kan prestanda försämras.