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.