Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

GD0106: Attempted to export explicit interface property 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.