ASP0006: Keine nicht literalen Sequenznummern verwenden
Wert | |
---|---|
Regel-ID | ASP0006 |
Kategorie | Verwendung |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Ursache
Ein Aufruf einer Methode in RenderTreeBuilder, die eine Sequenznummer als Parameter enthält, bei der es sich nicht um ein Literal handelt.
Regelbeschreibung
Der Vergleichsalgorithmus der Benutzeroberfläche von Blazor basiert auf Sequenznummern, um festzustellen, welche Elemente sich geändert haben. Die dynamische Berechnung der Sequenznummer oder Verwendung eines Zählers kann zu einer schwachen Vergleichsleistung führen. Verwenden Sie stattdessen eine literale Sequenznummer, die der Quellcodezeile des Elements zugeordnet ist. Der folgende Code erzeugt beispielsweise einen Fehler:
using Microsoft.AspNetCore.Components.Rendering;
var builder = new RenderTreeBuilder();
var seqNum = 1;
builder.OpenElement(seqNum, "div");
builder.CloseElement();
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, stellen Sie sicher, dass Aufrufe von Methoden der RenderTreeBuilder-Klasse, die eine Sequenznummer als Parameter verwenden, eine literale Sequenznummer nutzen.
using Microsoft.AspNetCore.Components.Rendering;
var builder = new RenderTreeBuilder();
builder.OpenElement(0, "div");
builder.CloseElement();
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel. Die Verwendung einer nicht literalen Sequenznummer kann zu Leistungseinbußen führen.