Использование обобщений в виджетах GTK # - PullRequest
0 голосов
/ 15 ноября 2011

Кто-нибудь когда-нибудь пытался использовать дженерики для виджета GTK #?

Я играю с идеей создания виджета, который состоит из выпадающего списка с двумя кнопками рядом с ним, одна для редактирования выбранного элемента, другая для создания нового элемента.Очевидно, это было бы наиболее целесообразно, если бы тип элемента был универсальным, так как в противном случае виджет не был бы очень полезным, или мне пришлось бы сделать его абстрактным, а затем создать большое количество подтипов, что не очень хорошолибо.

Вследствие этого мне интересно, кто-нибудь уже пробовал это.Насколько я вижу, в спецификации языка нет ничего, что могло бы помешать этому.Я предполагаю, что дизайнер пользовательского интерфейса в monodevelop, вероятно, будет шипеть на меня, но я могу жить с этим, пока виджет как таковой полностью функционален.

1 Ответ

0 голосов
/ 08 февраля 2017

Да, вы можете. Вам нужно только убедиться, что ваш универсальный класс реализует интерфейс с вашим показанным свойством.

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

Также вы должны сделать созданный дизайнером File универсальным и перестать работать с дизайнером, потому что он всегда будет переопределять класс как неуниверсальный. Так что создайте свой виджет и сделайте его более универсальным.

...