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.

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.