Ответ 1
Да, вы можете! Здесь сообщение в блоге, которое я сделал недавно с трюком:
Edit: Похоже, вы уже делаете это так. Этот метод работает отлично, поэтому я не считаю его слишком хакивым.
Вы должны иметь возможность создать общую форму:
public partial class MyGenericForm<T> :
Form where T : class
{
/* form code */
public List<T> TypedList { get; set; }
}
Действителен С# и компилируется. Однако конструктор не будет работать, и форма будет вызывать исключение во время выполнения, если у вас есть изображения, в которых указано, что он не может найти ресурс.
Я думаю, что это связано с тем, что разработчики окон формируют предположение, что ресурсы будут храниться под простым именем типа.
Да, вы можете! Здесь сообщение в блоге, которое я сделал недавно с трюком:
Edit: Похоже, вы уже делаете это так. Этот метод работает отлично, поэтому я не считаю его слишком хакивым.
У меня есть взлом для обхода этого, который работает, но не идеален:
Добавить новый класс в проект, который наследует форму с ее простым именем.
internal class MyGenericForm:
MyGenericForm<object> { }
Это означает, что, хотя разработчик по-прежнему ошибочен, ожидаемый простой тип (т.е. без <>
) все еще найден.
Вы можете сделать это в три этапа.
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
{
}