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: A propriedade exportada é uma implementação de interface explícita

ID da Regra

GD0106

Categoria

Uso

A correção altera a compatibilidade (breaking) ou não altera (non-breaking)

Não quebra compatibilidade (Non-breaking)

Ativado por padrão

Sim

Causa

Uma implementação explícita de propriedade de interface está anotada com o atributo [Export]. Propriedades que implementam uma interface explicitamente não podem ser exportadas.

Descrição da regra

O Godot não permite a exportação de implementações explícitas de propriedades de interface. Quando um membro de interface é implementado explicitamente, o membro fica oculto e os consumidores não podem acessá-lo, a menos que o tipo seja convertido para a interface primeiro. Membros implementados explicitamente também podem compartilhar o mesmo nome de outros membros no tipo, o que poderia criar conflitos de nomenclatura com outros membros exportados.

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; }
}

Como corrigir violações

Para corrigir uma violação desta regra, implemente a interface implicitamente ou remova o atributo [Export].

Quando suprimir avisos

Não suprima um aviso desta regra. Implementações explícitas de propriedades de interface não podem ser exportadas, portanto serão ignoradas pelo Godot, resultando em erros em tempo de execução.