GD0111: The exported tool button must be an expression-bodied property
Regel-ID |
GD0111 |
Kategorie |
Verwendung |
Fix führt oder führt nicht zu Kompatibilitätsbruch |
Kein Kompatibilitätsbruch |
Standardmäßig aktiviert |
Ja |
Ursache
A property is annotated with the [ExportToolButton] attribute but it's not
an expression-bodied property.
Regelbeschreibung
When reloading the .NET assembly, Godot will attempt to serialize exported
members to preserve their values. A field or a property with a backing field
that stores a Callable may prevent the unloading of the assembly.
An expression-bodied property doesn't have a backing field and won't store
the Callable, so Godot won't attempt to serialize it, which should result
in the successful reloading of the .NET assembly.
[ExportToolButton("Click me!")]
public Callable ValidClickMeButton => Callable.From(ClickMe);
// Invalid because the Callable will be stored in the property's backing field.
[ExportToolButton("Click me!")]
public Callable InvalidClickMeButton { get; } = Callable.From(ClickMe);
Wie man Verstöße behebt
To fix a violation of this rule, replace the property implementation with an expression-bodied property.
Wann man Warnungen unterdrücken sollte
Do not suppress a warning from this rule. Callable instances may prevent
the .NET assembly from unloading.