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], обычно предъявляет это требование, поскольку значения будут переданы движку. Если тип не может быть преобразован, это приведет к ошибкам во время выполнения.