ASP0006:不使用非文本序列号

价值
规则 ID ASP0006
类别 Usage
修复是中断修复还是非中断修复 Non-breaking

原因

对在 RenderTreeBuilder 中包含非字面值序列号作为参数的方法的调用。

规则说明

Blazor的 UI 差异算法依赖于序列号来确定哪些元素已更改。 在执行过程中动态计算序列号或使用计数器可能会导致差异化性能下降。 请改用映射到元素源代码行的字面序列号。 例如,以下代码生成错误:

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

何时禁止显示警告

不要禁止显示此规则的警告。 使用非文本序列号可能会导致性能下降。