Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
GD0302: O parâmetro de tipo genérico deve estar anotado com o atributo '[MustBeVariant]'
ID da Regra |
GD0302 |
Categoria |
Uso |
A correção altera a compatibilidade (breaking) ou não altera (non-breaking) |
Quebra compatibilidade (Breaking) |
Ativado por padrão |
Sim |
Causa
Um tipo genérico foi especificado para um argumento de tipo genérico quando um tipo compatível com Variant era esperado, mas o tipo genérico especificado não está anotado com o atributo [MustBeVariant].
Descrição da regra
Quando um parâmetro de tipo genérico é anotado com o atributo [MustBeVariant], o tipo genérico deve obrigatoriamente ser um tipo compatível com Variant. Quando o tipo utilizado também é um tipo genérico, esse tipo genérico também deve estar anotado com o atributo [MustBeVariant]. Por exemplo, o tipo genérico Godot.Collections.Array<T> suporta apenas itens de um tipo que possa ser convertido para Variant; um tipo genérico pode ser especificado se estiver devidamente anotado.
public void Method1<T>()
{
// T is not valid here because it may not a Variant-compatible type.
var invalidArray = new Godot.Collections.Array<T>();
}
public void Method2<[MustBeVariant] T>()
{
// T is guaranteed to be a Variant-compatible type because it's annotated
// with the [MustBeVariant] attribute, so it can be used here.
var validArray = new Godot.Collections.Array<T>();
}
Como corrigir violações
Para corrigir uma violação desta regra, adicione o atributo [MustBeVariant] ao tipo genérico que é usado como um argumento de tipo genérico que precisa ser compatível com Variant.
Quando suprimir avisos
Não suprima um aviso desta regra. APIs que contêm argumentos de tipo genérico anotados com o atributo [MustBeVariant] geralmente possuem essa exigência porque os valores serão passados para o motor; se o tipo não puder passar por marshalling, isso resultará em erros em tempo de execução.