Se puede utilizar formas genéricas en C#?
Pregunta
Usted debe ser capaz de crear una forma genérica:
public partial class MyGenericForm<T> :
Form where T : class
{
/* form code */
public List<T> TypedList { get; set; }
}
Es válido en C#, y se compila.Sin embargo, el diseñador no funciona y la forma lanzará una excepción en tiempo de ejecución si tienes alguna de las imágenes que indica que no encuentra el recurso.
Creo que esto es debido a que el diseñador de windows forms se supone que los recursos se almacenan bajo el simple nombre del tipo.
Solución
Sí, usted puede!He aquí un blog post que hice hace un tiempo con el truco:
Editar:Parece que ya estás haciendo de esta manera.Este método funciona bien, así que no la consideran demasiado chapucero.
Otros consejos
Tengo un truco para solucionar esto, que funciona pero no es lo ideal:
Agregar una nueva clase al proyecto, que hereda el formulario con su nombre simple.
internal class MyGenericForm:
MyGenericForm<object> { }
Esto significa que aunque el diseñador aún está mal la espera de tipo simple (yo.e sin <>
) todavía se encuentra.