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.
Checking the stable version of the documentation...
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.