Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

GD0106: Attempted to export explicit interface property implementation

规则 ID

GD0106

类别

用法

修复是中断修复还是非中断修复

Non-breaking

默认启用

原因

An explicit interface property implementation is annotated with the [Export] attribute. Properties that implement an interface explicitly can't be exported.

规则说明

Godot doesn't allow exporting explicit interface property implementations. When an interface member is implemented explicitly, the member is hidden and consumers can't access them unless the type is converted to the interface first. Explicitly implemented members can also share the same name of other members in the type, so it could create naming conflicts with other exported members.

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

如何解决冲突

To fix a violation of this rule, implement the interface implicitly or remove the [Export] attribute.

何时禁止显示警告

Do not suppress a warning from this rule. Explicit interface property implementations can't be exported so they will be ignored by Godot, resulting in runtime errors.