GD0111: Экспортированная кнопка инструмента должна быть свойством с телом выражения

Идентификатор правила

GD0111

Категория

Использование

Исправление может быть как ломающим, так и не ломающим

Неразрушающий

Включено по умолчанию

Да

Причина

Свойство аннотируется атрибутом [ExportToolButton], но оно не является свойством с телом выражения.

Описание правила

При перезагрузке сборки .NET Godot попытается сериализовать экспортированные члены для сохранения их значений. Поле или свойство с резервным полем, которое хранит Callable, может препятствовать выгрузке сборки.

Свойство с телом выражения не имеет резервного поля и не будет хранить 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);

Как устранить нарушения

Чтобы устранить нарушение этого правила, замените реализацию свойства на свойство с телом выражения.

Когда следует подавлять предупреждения

Не подавляйте предупреждение из этого правила. Экземпляры Callable могут помешать выгрузке сборки .NET.