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.