2009-10-23 10 views
19

Quiero declarar una lista que contiene los tipos básicamente:Declarar una lista de tipos de

List<Type> types = new List<Type>() {Button, TextBox }; 

es esto posible?

+0

¿Para qué está utilizando esto? –

+0

Estoy trabajando en un conjunto de funciones para verificar/validar datos. Los usuarios ingresan en un formulario. – Luiscencio

Respuesta

45

Prueba esto:

List<Type> types = new List<Type>() { typeof(Button), typeof(TextBox) }; 

typeof() El operador se utiliza para devolver el System.Type de un tipo.

Para instancias de objetos, puede llamar al método GetType() heredado de Object.

+4

Cambie la declaración para usar 'var' y tiene mi voto positivo. : P – Noldorin

+0

Una pequeña variación del escenario para la posteridad: si tiene una instancia/objeto y desea incluir su tipo en la misma lista, use la propiedad .GetType() del objeto - p. vea el uso de la variable 'myButton' en lo siguiente: Button myBtn = new Button(); Lista types = new Lista () {myBtn.GetType(), typeof (TextBox)}; –

+0

Si esto se declara en otro lugar que no sea en un tipo de cuerpo de método, la palabra clave var no está disponible. Pero sí, podrías (y deberías) usar var en un método. –

5

Sí, utilice List<System.Type>

var types = new List<System.Type>(); 

Para añadir elementos a la lista, utilice la palabra clave typeof.

types.Add(typeof(Button)); 
types.Add(typeof(CheckBox)); 
+0

Aparece un error: "El botón es tipo pero se usa como variable" – Luiscencio

1

utilizar una lista genérica escrito:

List<Type> lt = new List<Type>(); 
13

Casi lo tienes con tu código. Use typeof y no solo el nombre del tipo.

List<Type> types = new List<Type>() {typeof(Button), typeof(TextBox) }; 
4
List<Type> types = new List<Type>{typeof(String), typeof(Int32) }; 

Es necesario utilizar la palabra clave typeof.

Cuestiones relacionadas