Поделиться через


ASP0006. Не используйте номера последовательности, не являющиеся литеральными

Значение
Идентификатор правила ASP0006
Категория Использование
Исправление является критическим или не критическим Не критическое

Причина

Вызов метода, RenderTreeBuilder содержащего порядковый номер, который не является литеральным в качестве параметра.

Описание правила

BlazorАлгоритм диффинга пользовательского интерфейса зависит от порядковых номеров, чтобы определить, какие элементы изменились. Вычисление номера последовательности динамически или использование счетчика может привести к низкой производительности диффинга. Вместо этого используйте номер последовательности литерала, который сопоставляется со строкой исходного кода для элемента. Например, следующий код приводит к ошибке:

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

Устранение нарушений

Чтобы устранить нарушение этого правила, убедитесь, что вызовы методов класса RenderTreeBuilder , которые принимают порядковый номер в качестве параметра, используют литеральный порядковый номер.

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

Когда лучше отключить предупреждения

Не подавляйте предупреждение из этого правила. Использование номера последовательности, отличного от литерального, может привести к снижению производительности.