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();

Когда следует подавлять предупреждения

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