Udostępnij przez


ASP0006: Nie używaj nieliteralnych numerów sekwencyjnych

Wartość
Identyfikator reguły ASP0006
Kategoria Użycie
Poprawka jest przełomowa lub bez przełomu Niełamiący

Przyczyna

Wywołanie metody w RenderTreeBuilder z numerem sekwencji, który nie jest literałem jako parametrem.

Opis reguły

BlazorAlgorytm różnicowania interfejsu użytkownika opiera się na numerach sekwencji w celu określenia, które elementy uległy zmianie. Dynamiczne obliczanie numeru sekwencji lub użycie licznika może doprowadzić do słabej wydajności różnicowania. Zamiast tego użyj dosłownego numeru sekwencji, który odpowiada linii kodu źródłowego dla elementu. Na przykład następujący kod generuje błąd:

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

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, upewnij się, że wywołania metod w klasie RenderTreeBuilder, które przyjmują numer sekwencji jako parametr, używają literału numeru sekwencji.

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

Kiedy pomijać ostrzeżenia

Nie pomijać ostrzeżenia z tej reguły. Użycie niesłownego numeru sekwencji może spowodować obniżenie wydajności.