GD0106: Экспортированное свойство является явной реализацией интерфейса

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

GD0106

Категория

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

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

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

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

Да

Причина

Явная реализация свойства интерфейса аннотируется атрибутом [Export]. Свойства, явно реализующие интерфейс, не могут быть экспортированы.

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

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

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; }
}

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

Чтобы устранить нарушение этого правила, реализуйте интерфейс неявно или удалите атрибут [Export].

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

Не подавляйте предупреждение из этого правила. Явные реализации свойств интерфейса не могут быть экспортированы, поэтому Godot будет их игнорировать, что приведёт к ошибкам во время выполнения.