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

时间:2012-05-09 09:02:20

标签: c# vala

我对Vala比较新,我试图手动将一些C#代码移植到vala中,我已经开始用一个简单的例子来测试它。

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

以下是测试vala文件Universe.vala:

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

我收到编译错误:

  

Universe.vala:错误:属性getter必须有一个正文

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

1 个答案:

答案 0 :(得分:3)

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

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

只需添加abstract关键字即可。