Generics 在GTK小部件中使用泛型

Generics 在GTK小部件中使用泛型,generics,widget,gtk#,Generics,Widget,Gtk#,有人尝试过在GTK小部件中使用泛型吗 我想创建一个小部件,它由一个组合框组成,旁边有两个按钮,一个用于编辑所选项目,另一个用于创建新项目。显然,如果项的类型是泛型的,这将是最有意义的,否则小部件就不会非常有用,或者我将不得不将其作为一个抽象小部件,然后创建大量的子类型,这也不是很好 因此,我想知道是否有人已经尝试过这个。就我所知,语言规范中没有任何东西可以阻止它。我想monodevelop中的UI设计师可能会对我发出嘘声,但我可以接受,只要小部件是这样的 功能齐全。是的,您可以。您只需确保泛型类

有人尝试过在GTK小部件中使用泛型吗

我想创建一个小部件,它由一个组合框组成,旁边有两个按钮,一个用于编辑所选项目,另一个用于创建新项目。显然,如果项的类型是泛型的,这将是最有意义的,否则小部件就不会非常有用,或者我将不得不将其作为一个抽象小部件,然后创建大量的子类型,这也不是很好

因此,我想知道是否有人已经尝试过这个。就我所知,语言规范中没有任何东西可以阻止它。我想monodevelop中的UI设计师可能会对我发出嘘声,但我可以接受,只要小部件是这样的
功能齐全。

是的,您可以。您只需确保泛型类实现了一个具有所示属性的接口

public partial class ExampleWidget<T> : Gtk.Bin where T: INote
{
    private T model;

    public ComboBoxItem (T model)
    {
        this.Build ();
        this.model = model;
        label1.Text = model.Description;
    }
}
此外,还必须使设计器创建的文件为泛型文件,并且必须停止使用设计器,因为它将始终覆盖非泛型类。
因此,请设计您的小部件,使其比泛型小。

我不知道您为什么认为这需要泛型。组合框只是一组字符串。在它最简单的形式中,是的。在更高级的表单中,它显示可为特定目的选择的所有项目的name属性。