ASP0006: リテラル以外のシーケンス番号を使用しない

Value
ルール ID ASP0006
[カテゴリ] 使用法
修正が中断ありか中断なしか なし

原因

パラメーターとしてリテラルではないシーケンス番号を含む 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();

どのようなときに警告を抑制するか

このルールからの警告は抑制 "しない" でください。 リテラル以外のシーケンス番号を使用すると、パフォーマンスが低下する可能性があります。