具有 get 属性的 vala 接口 - 编译错误

本文关键字:编译 错误 接口 vala get 属性 具有 | 更新日期: 2023-09-27 18:33:31

我对Vala相对较新,我正在尝试手动将一些C#代码移植到vala中,我从一个微不足道的例子开始测试它。

C# 编码人员会将下面的代码片段识别为 1-1 映射到 C#。

这是测试vala文件Universe.vala:

namespace Universe
{
    public interface Planet
    {
        string Name { get; }
    }
}

我收到编译错误:

Universe.vala:错误:属性获取者必须有一个身体

看起来 Vala 不支持接口中的 get(set)ter 属性 - 或者我错过了什么?我该如何解决这个问题?

具有 get 属性的 vala 接口 - 编译错误

在Vala中,接口仍然可以包含非抽象的属性和方法(但不能包含变量)。这意味着如果要定义抽象属性或方法,仍然需要使用 abstract 关键字,就像在抽象类中一样。

由于您在此处没有使用 abstract 关键字,因此编译器认为您正在尝试定义非抽象属性。但是,接口中的非抽象属性需要一个显式主体(因为默认实现需要使用变量,这是不允许的)。所以这就是为什么错误消息抱怨丢失的身体。

只需添加 abstract 关键字,它就可以正常工作。