不使用GObject样式的构造就可以扩展基本Gtk小部件吗?

不使用GObject样式的构造就可以扩展基本Gtk小部件吗?,gtk,vala,gobject,Gtk,Vala,Gobject,我是如何从我的,GObject风格的构造中发现的,对于vala类防御来说是不需要的。但许多gtk应用程序在扩展基本小部件时使用这种方式。例如,为Gtk.ApplicationWindow类执行此操作 所以我的问题是,我可以扩展任何基本Gtk类而不使用Object()construction吗?通常您会调用基本构造函数,如下所示: public class MainWindow : Gtk.ApplicationWindow { public MainWindow (Gtk.Applica

我是如何从我的,
GObject
风格的构造中发现的,对于vala类防御来说是不需要的。但许多gtk应用程序在扩展基本小部件时使用这种方式。例如,为
Gtk.ApplicationWindow
类执行此操作


所以我的问题是,我可以扩展任何基本
Gtk
类而不使用
Object()
construction吗?

通常您会调用基本构造函数,如下所示:

public class MainWindow : Gtk.ApplicationWindow {
    public MainWindow (Gtk.Application application) {
        base (application);
    }
}
这不适用于自行使用GObject样式构造参数的类

如您所知,从此类派生的正确方法是:

public class MainWindow : Gtk.ApplicationWindow {
    public MainWindow (Gtk.Application application) {
        Object (application: application);
    }
}
这并没有什么不同,只是您必须指定每个属性的名称,并使用
对象
类(在C中是GObject),而不是指定

PS:在我对你的另一个问题()的回答中,我的意思是,当你编写自己的类,其他人可以从中派生时,你不需要使用GObject风格的构造。另一方面,Gtk.MainWindow的设计也迫使您在派生类中使用GObject样式的构造