Você pode usar formulários genéricos em C#?
Pergunta
Você deve ser capaz de criar um formulário genérico:
public partial class MyGenericForm<T> :
Form where T : class
{
/* form code */
public List<T> TypedList { get; set; }
}
É C# válido e compila.No entanto, o designer não funcionará e o formulário lançará uma exceção de tempo de execução se você tiver alguma imagem informando que não consegue encontrar o recurso.
Acho que isso ocorre porque o designer de formulários do Windows assume que os recursos serão armazenados sob o nome do tipo simples.
Solução
Sim você pode!Aqui está uma postagem no blog que fiz há algum tempo com o truque:
Projetando Formulários Genéricos
Editar:Parece que você já está fazendo assim.Este método funciona bem, então não o consideraria muito hackeado.
Outras dicas
Eu tenho um hack para solucionar isso, que funciona, mas não é ideal:
Adicione uma nova classe ao projeto que herde o formulário com seu nome simples.
internal class MyGenericForm:
MyGenericForm<object> { }
Isto significa que embora o designer ainda esteja errado, o tipo simples esperado (ou seja, sem <>
) ainda é encontrado.