GD0301:泛型类型参数必须是 Variant 兼容类型

规则 ID

GD0301

类别

用法

修复是破坏性的还是非破坏性的

破坏性的

默认启用

原因

当泛型类型参数期望使用 Variant 兼容类型时,却指定了不受支持的类型。

规则说明

当泛型类型参数使用 [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 兼容类型,或使用不需要泛型类型参数为 Variant 兼容类型的其他 API。

何时抑制警告

不要抑制该规则的警告。包含用 [MustBeVariant] 属性注解的泛型类型参数的 API 通常有此要求,因为值将被传递给引擎,如果该类型无法被编组,则会导致运行时错误。