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.

GD0106: La proprietà esportata è un'implementazione esplicita di un'interfaccia

ID regola

GD0106

Categoria

Utilizzo

Soluzione è distruttiva o non-distruttiva

Non-distruttiva

Abilitato per predefinito

Si

Causa

Un'implementazione esplicita di una proprietà di interfaccia è annotata con l'attributo [Export]. Non è possibile esportare le proprietà che implementano un'interfaccia esplicitamente.

Descrizione della regola

Godot non consente l'esportazione di implementazioni esplicite delle proprietà di interfaccia. Quando un membro di interfaccia è implementato esplicitamente, il membro è nascosto e i consumatori non possono accedervi, a meno che il tipo non sia prima convertito nell'interfaccia. I membri implementati esplicitamente possono anche condividere lo stesso nome di altri membri del tipo, il che potrebbe creare conflitti tra i nomi di altri membri esportati.

public interface MyInterface
{
    public int MyProperty { get; set; }
}

public class MyNode1 : Node, MyInterface
{
    // The property can be exported because it implements the interface implicitly.
    [Export]
    public int MyProperty { get; set; }
}

public class MyNode2 : Node, MyInterface
{
    // The property can't be exported because it implements the interface explicitly.
    [Export]
    int MyInterface.MyProperty { get; set; }
}

Come risolvere le violazioni

Per correggere una violazione di questa regola, implementare l'interfaccia implicitamente o rimuovere l'attributo [Export].

Quando sopprimere gli avvertimenti

Non sopprimere un avviso da questa regola. Non è possibile esportare le implementazioni esplicite delle proprietà di interfaccia, quindi saranno ignorate da Godot, causando errori in fase di esecuzione.