2009-10-23 12 views
19

Chcę zadeklarować listę zawierającą typy zasadniczo:Deklarowanie listy typów

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

jest to możliwe?

+0

Do czego to służy? –

+0

Pracuję nad zestawem funkcji do weryfikacji/sprawdzania danych użytkowników wprowadzanych w formularzu. – Luiscencio

Odpowiedz

45

Spróbuj tego:

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

Operator typeof() służy do powrotu System.Type typu.

Dla instancji obiektów można wywołać metodę GetType() odziedziczoną z Object.

+4

Zmień deklarację, aby użyć 'var' i masz prawo głosu. : P – Noldorin

+0

Nieznaczna zmiana scenariusza dla potomności: jeśli masz instancję/obiekt i chcesz uwzględnić jego typ na tej samej liście, użyj właściwości obiektu .GetType() obiektu - np. zobacz użycie zmiennej myButton w: Przycisk myBtn = new Button(); Lista typy = nowa lista () {myBtn.GetType(), typeof (TextBox)}; –

+0

Jeśli jest zadeklarowane gdzie indziej niż w typie metody, słowo kluczowe var nie jest dostępne. Ale tak, możesz (i powinieneś) użyć var ​​w metodzie. –

5

Tak, użyj List<System.Type>

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

Aby dodać elementy do listy, należy użyć słowa kluczowego typeof.

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

Pojawia się błąd: "Przycisk jest typem, ale jest używany jako zmienna" – Luiscencio

1

Użyj wpisane listę Generic:

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

Prawie masz to z kodem. Użyj typeof, a nie tylko nazwę typu.

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

trzeba użyć słowa kluczowego typeof.

Powiązane problemy