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: Il parametro di tipo generico deve essere annotato con l'attributo '[MustBeVariant]'
ID regola |
GD0302 |
Categoria |
Utilizzo |
Soluzione è distruttiva o non-distruttiva |
Distruttiva |
Abilitato per predefinito |
Si |
Causa
Un tipo generico è specificato per un argomento di tipo generico quando è previsto un tipo compatibile con Variant, ma il tipo generico specificato non è annotato con l'attributo [MustBeVariant].
Descrizione della regola
Quando un parametro di tipo generico è annotato con l'attributo [MustBeVariant], il tipo generico deve essere un tipo compatibile con Variant. Quando il tipo utilizzato è anch'esso un tipo generico, anche questo tipo generico deve essere annotato con l'attributo [MustBeVariant]. Ad esempio, il tipo generico Godot.Collections.Array<T> supporta solo elementi di un tipo che si può convertire in Variant; è possibile specificare un tipo generico se correttamente annotato.
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>();
}
Come risolvere le violazioni
Per correggere una violazione di questa regola, aggiungere l'attributo [MustBeVariant] al tipo generico utilizzato come argomento di tipo generico che deve essere compatibile con Variant.
Quando sopprimere gli avvertimenti
Non sopprimere un avviso da questa regola. Le API che contengono argomenti di tipo generico annotati con l'attributo [MustBeVariant] solitamente hanno questo requisito perché i valori saranno passati al motore; se non è possibile convertire il tipo si causeranno errori in fase di esecuzione.