Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

GD0301: The generic type argument must be a Variant compatible type

Regel-ID

GD0301

Kategorie

Verwendung

Fix führt oder führt nicht zu Kompatibilitätsbruch

Kompatibilitätsbruch

Standardmäßig aktiviert

Ja

Ursache

Ein nicht unterstützter Typ wird für ein generisches Typ-Argument angegeben, wenn ein Variant-kompatibler-Typ erwartet wird.

Regelbeschreibung

Wenn ein Parameter von generischen Typs mit dem Attribut [MustBeVariant] annotiert ist, muss der generische Typ ein Variant-kompatibler Typ sein. Zum Beispiel unterstützt der generische Typ Godot.Collections.Array<T> nur Elemente eines Typs, der in Variant konvertiert werden kann.

class SomeType { }

// SomeType is not a valid type because it doesn't derive from GodotObject,
// so it's not compatible with Variant.
var invalidArray = new Godot.Collections.Array<SomeType>();

// System.Int32 is a valid type because it's compatible with Variant.
var validArray = new Godot.Collections.Array<int>();

Wie man Verstöße behebt

Um einen Verstoß gegen diese Regel zu beheben, ändern Sie das Argument des generischen Typs so, dass es ein variantenkompatibler Typ ist, oder verwenden Sie eine andere API, die nicht verlangt, dass das Argument des generischen Typs ein variantenkompatibler Typ ist.

Wann man Warnungen unterdrücken sollte

Unterdrücken Sie nicht eine Warnung zu dieser Regel. API, die generische Typargumente enthält, die mit dem Attribut ``[MustBeVariant]'' annotiert sind, haben in der Regel diese Anforderung, da die Werte an die Engine übergeben werden; wenn der Typ nicht marshalled werden kann, führt dies zu Laufzeitfehlern.