2010-04-09 20 views
8

¿Es posible pasar un tipo genérico T a una instancia de un winform para que T se pueda utilizar en todo el formulario?C# Generics y Winform

Respuesta

10

Sí, un formulario es como cualquier otra clase. Tendrás que modificar un poco el código generado por el diseñador, y ten cuidado de que no se deshaga.

// TestForm.cs 
    public partial class TestForm<T> : Form 

// TestForm.Designer.cs 
partial class TestForm<T> 
+6

Tenga en cuenta que los formularios genéricos no se pueden mostrar en el Diseñador de formularios, aunque sus descendientes sí. – wRAR

+0

@wrar, estaba probando con VS2010 y eso no tiene (obviamente) problemas con mi TestForm. Pero espero que sea un poco débil. –

+0

Estoy en el proceso de probarlo y le haré saber cómo funciona. – Nathan

4

Como se ha sugerido, esto se puede hacer - pero en muchos casos se encontrará luchando contra el marco de la OMI, etc. puede ser más sencillo que sólo tiene que pasar un Type en la forma (como una propiedad, tal vez), e instancias a través de una propiedad object (o una interfaz/clase base, si corresponde).

puede utilizar genéricos, pero en muchos casos en este escenario no le ayudará mucho, y el diseñador lo odia.

+2

Marc, el diseñador de VS2010 no parece tener ningún problema con un formulario genérico. Sin embargo, falla totalmente con la herencia de formulario. –