Можете ли вы использовать общие формы в C #? - PullRequest
32 голосов
/ 14 августа 2008

Вы должны иметь возможность создать общую форму:

public partial class MyGenericForm<T> :
    Form where T : class
{
    /* form code */
    public List<T> TypedList { get; set; }
}

Действителен C # и компилируется. Однако дизайнер не будет работать, и форма выдаст исключение времени выполнения, если у вас есть какие-либо изображения, указывающие, что он не может найти ресурс.

Я думаю, это потому, что конструктор форм Windows предполагает, что ресурсы будут храниться под именем простого типа.

Ответы [ 2 ]

20 голосов
/ 14 августа 2008

Да, вы можете! Вот сообщение в блоге, которое я сделал недавно с помощью этого трюка:

Разработка общих форм

Редактировать: Похоже, вы уже делаете это таким образом. Этот метод отлично работает, поэтому я не считаю его слишком хакерским.

0 голосов
/ 14 августа 2008

У меня есть способ обойти это, что работает, но не идеально:

Добавить новый класс в проект, который наследует форму с ее простым именем.

internal class MyGenericForm:
    MyGenericForm<object> { }

Это означает, что, хотя конструктор все еще не прав, ожидаемый простой тип (т.е. без <>) все еще найден.

...