Подтвердить что ты не робот

Можете ли вы использовать общие формы в С#?

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

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

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

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

4b9b3361

Ответ 1

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

Проектирование общих форм

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

Ответ 2

У меня есть взлом для обхода этого, который работает, но не идеален:

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

internal class MyGenericForm:
    MyGenericForm<object> { }

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

Ответ 3

Вы можете сделать это в три этапа.

1) Заменить в файле Form1.cs

public partial class Form1<TEntity, TContext> : Formbase // where....

2) Заменить в Form1.Designer.cs

 partial class Form1<TEntity, TContext>

3) Создайте новый файл: Form1.Generic.cs (для открытия дизайна)

partial class Form1
{
}