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.

GD0111:导出的工具按钮必须是一个表达式主体属性

规则 ID

GD0111

类别

用法

修复是破坏性的还是非破坏性的

非破坏性的

默认启用

原因

某个属性被加上了 [ExportToolButton] 属性,但它并不是一个 expression-bodied property

规则说明

在重新加载 .NET 程序集(Assembly)时,Godot 会尝试把被导出的成员序列化,以此来保留它们的数值。但是,如果一个字段或属性(带有后备字段)存储的是 Callable (可调用对象),可能会导致该程序集无法被正常卸载。

表达式主体属性(expression-bodied property)没有对应的后备字段,因此不会存储这个 Callable 。这样一来,Godot 就不会尝试去序列化它,从而应该能顺利实现 .NET 程序集的热重载。

[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);

如何解决违规情况

要修复违反这条规则的问题,请将该属性的实现方式替换为 expression-bodied property

何时抑制警告

不要屏蔽(或忽略)这条规则产生的警告。因为 Callable (可调用对象)实例可能会导致 .NET 程序集无法正常卸载。