GD0301: Аргумент универсального типа должен быть типом, совместимым с вариантом

Идентификатор правила

GD0301

Категория

Использование

Исправление может быть как ломающим, так и не ломающим

Breaking (Прерывание)

Включено по умолчанию

Да

Причина

Для аргумента универсального типа указан неподдерживаемый тип, хотя ожидается :Variant-compatible type.

Описание правила

Если параметр универсального типа аннотирован атрибутом [MustBeVariant], универсальный тип должен быть совместимым с Variant. Например, универсальный тип Godot.Collections.Array<T> поддерживает только элементы типа, который можно преобразовать в Variant.

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

Как устранить нарушения

Чтобы устранить нарушение этого правила, измените аргумент универсального типа на тип, совместимый с Variant, или используйте другой API, который не требует, чтобы аргумент универсального типа был типом, совместимым с Variant.

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

Не подавляйте предупреждение из этого правила. API, содержащие аргументы универсального типа, аннотированные атрибутом [MustBeVariant], обычно предъявляет это требование, поскольку значения будут переданы движку. Если тип не может быть преобразован, это приведет к ошибкам во время выполнения.