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.