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: The exported property is an explicit interface implementation

Regel-ID

GD0106

Kategorie

Verwendung

Fix führt oder führt nicht zu Kompatibilitätsbruch

Kein Kompatibilitätsbruch

Standardmäßig aktiviert

Ja

Ursache

Eine explizite Implementierung einer Interface-Property ist mit dem Attribut [Export] annotiert. Propertys, die ein Interface explizit implementieren, können nicht exportiert werden.

Regelbeschreibung

Godot erlaubt es nicht, explizite Implementierungen von Interface- Propertys zu exportieren. Wenn ein Interface-Member explizit implementiert wird, wird der Member ausgeblendet, und Nutzer können nicht darauf zugreifen, es sei denn, der Typ wird zuerst in das Interface konvertiert. Explizit implementierte Member können auch denselben Namen wie andere Member des Typs haben, so dass es zu Namenskonflikten mit anderen exportierten Membern kommen kann.

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

Wie man Verstöße behebt

Um einen Verstoß gegen diese Regel zu beheben, implementieren Sie das Interface implizit oder entfernen Sie das Attribut [Export].

Wann man Warnungen unterdrücken sollte

Unterdrücken Sie nicht eine Warnung zu dieser Regel. Explizite Implementierungen von Interface-Propertys können nicht exportiert werden, so dass sie von Godot ignoriert werden und zu Laufzeitfehlern führen.