2009-10-23 5 views
19

Je veux déclarer une liste contenant essentiellement types:Déclarant une liste des types

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

est-ce possible?

+0

Pour quoi utilisez-vous cela? –

+0

Je travaille sur un ensemble de fonctions pour vérifier/valider les données Les utilisateurs entrent dans un formulaire. – Luiscencio

Répondre

45

Essayez ceci:

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

L'opérateur typeof() est utilisé pour renvoyer le System.Type d'un type. Pour les instances d'objet, vous pouvez appeler la méthode GetType() héritée de Object.

+4

Changez la déclaration pour utiliser 'var' et vous avez mon up-vote. : P – Noldorin

+0

Une légère variation du scénario pour la postérité: si vous avez une instance/objet et que vous voulez inclure son type dans la même liste, utilisez la propriété .GetType() de l'objet - par ex. voir l'utilisation de la variable 'myButton' dans ce qui suit: Bouton myBtn = new Button(); Liste types = new Liste () {myBtn.GetType(), typeof (TextBox)}; –

+0

Si cela est déclaré ailleurs que dans un corps de méthode, le mot-clé var n'est pas disponible. Mais oui vous pouvez (et devriez) utiliser var dans une méthode. –

5

Oui, utiliser List<System.Type>

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

Pour ajouter des éléments à la liste, utilisez le mot-clé typeof.

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

Je reçois une erreur: "Le bouton est de type mais est utilisé comme une variable" – Luiscencio

1

Utilisez une liste générique typée:

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

Vous l'avez presque avec votre code. Utilisez typeof et pas seulement le nom du type.

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

Vous devez utiliser le mot-clé typeof.

Questions connexes