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 будет их игнорировать, что приведёт к ошибкам во время выполнения.