Grundlegende Reflection
In diesem Kapitel werden wir die grundlegenden und wichtigen Funktionen der Reflection behandeln, die in der Web- und UI-Entwicklung mit C# nützlich sein könnten.
Abrufen der Typen von Objekten zur Laufzeit
Die erste Funktion ist die, die wir bereits im letzten Kapitel untersucht haben. Es ist die GetType-Methode. Die GetType-Methode gibt uns den Typ eines beliebigen Objekts. Dies kann nützlich sein, wenn wir Entscheidungen basierend auf den Typen von Objekten treffen möchten:
index.cs
12345678910static float ExampleMethod(object value) { if(value.GetType() == typeof(int)) { return (float) value * 2; } return (float) value; }
Es ist wichtig zu beachten, dass wir die typeof-Funktion nicht mit Objekten verwenden können, sondern mit Klassennamen:
index.cs
1234int value = 10; typeof(value) // Incorrect typeof(int) // Correct, returns "System.Int32" typeof(long) // Correct, returns "System.Int64"
Es gibt eine Klasse namens Type, die im Namespace System.Reflection definiert ist. Wir können Variablen vom Typ Type erstellen und das Ergebnis von GetType oder typeof in diesen Variablen speichern:
index.cs
12Type exampleVar1 = value.GetType(); Type exampleVar2 = typeof(int);
Die typeof Funktion ist nicht genau dasselbe wie die GetType() Methode. Beide geben eine Type-Instanz zurück, jedoch gibt typeof die Type-Instanz einer Klasse zur Kompilierungszeit zurück, während die GetType()-Methode die Type-Instanz eines Objekts zur Laufzeit zurückgibt. Dies liegt daran, dass das Programm bei der Verwendung von typeof(int) im Wesentlichen bereits weiß, dass der Datentyp int ist, es muss ihn einfach in eine Type-Instanz übersetzen. Während im Fall von value.GetType() das Programm den Typ des value-Objekts herausfinden muss.
Eine Liste aller Eigenschaften eines Typs erhalten
Die Type-Objekte haben eine Methode namens GetProperties, die die Liste aller öffentlichen Eigenschaften im Zieltyp abrufen kann.
Die Eigenschaftsreferenzen können in einem Array vom Typ PropertyInfo gespeichert werden. Die PropertyInfo-Klasse ist im System.Reflection-Namespace definiert und verfügt über eine Vielzahl nützlicher Attribute und Methoden.
PropertyInfo[] property = exampleType.GetProperties();
Einzelne spezifische Eigenschaftenreferenzen können auch mit der GetProperty-Methode abgerufen werden.
PropertyInfo property = exampleType.GetProperty(propertyName);
Die GetProperty-Methode gibt die Eigenschaft zurück, die mit dem propertyName übereinstimmt. Andernfalls gibt sie null zurück.
Eine Liste aller Methoden eines Typs erhalten
Wir können eine Liste aller Methoden eines bestimmten Typs erhalten, indem wir die Methode GetMethods der Type-Instanz aufrufen.
Die Methodenreferenzen können in einem Array vom Typ MethodInfo gespeichert werden, das ebenfalls im Namespace System.Reflection definiert ist.
index.cs
1MethodInfo[] methods = exampleType.GetMethods();
Wir können auch eine einzelne Methode aus einer Klasse mit GetMethod abrufen:
index.cs
1MethodInfo method = exampleType.GetMethod("methodName");
Die GetMethod-Methode gibt die erste Methode zurück, die mit dem Namen methodName übereinstimmt. Wenn es keine solche Methode gibt, wird null zurückgegeben.
Die MethodInfo-Klasse hat eine Methode namens Invoke, die die folgenden Argumente annimmt:
index.cs
1Invoke(objectReference, arguments);
Hier muss objectReference ein Objekt des Typs sein, von dem die Methode stammt. Die arguments können entweder durch null im Falle von keinen Argumenten oder durch ein Array vom Typ object dargestellt werden. Zum Beispiel:
index.cs
12method.Invoke(exampleObject, null); method.Invoke(exampleObject, new object[] { "first", "second", 1, 2, 3.4f, 5.67, true });
1. Was macht die GetType-Methode in C#?
2. Wie kann man mit Reflection eine Liste aller Eigenschaften eines Typs erhalten?
3. Was ist die korrekte Methode, um eine Methode aufzurufen, die zwei Argumente vom Typ string und int hat?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 3.7
Grundlegende Reflection
Swipe um das Menü anzuzeigen
In diesem Kapitel werden wir die grundlegenden und wichtigen Funktionen der Reflection behandeln, die in der Web- und UI-Entwicklung mit C# nützlich sein könnten.
Abrufen der Typen von Objekten zur Laufzeit
Die erste Funktion ist die, die wir bereits im letzten Kapitel untersucht haben. Es ist die GetType-Methode. Die GetType-Methode gibt uns den Typ eines beliebigen Objekts. Dies kann nützlich sein, wenn wir Entscheidungen basierend auf den Typen von Objekten treffen möchten:
index.cs
12345678910static float ExampleMethod(object value) { if(value.GetType() == typeof(int)) { return (float) value * 2; } return (float) value; }
Es ist wichtig zu beachten, dass wir die typeof-Funktion nicht mit Objekten verwenden können, sondern mit Klassennamen:
index.cs
1234int value = 10; typeof(value) // Incorrect typeof(int) // Correct, returns "System.Int32" typeof(long) // Correct, returns "System.Int64"
Es gibt eine Klasse namens Type, die im Namespace System.Reflection definiert ist. Wir können Variablen vom Typ Type erstellen und das Ergebnis von GetType oder typeof in diesen Variablen speichern:
index.cs
12Type exampleVar1 = value.GetType(); Type exampleVar2 = typeof(int);
Die typeof Funktion ist nicht genau dasselbe wie die GetType() Methode. Beide geben eine Type-Instanz zurück, jedoch gibt typeof die Type-Instanz einer Klasse zur Kompilierungszeit zurück, während die GetType()-Methode die Type-Instanz eines Objekts zur Laufzeit zurückgibt. Dies liegt daran, dass das Programm bei der Verwendung von typeof(int) im Wesentlichen bereits weiß, dass der Datentyp int ist, es muss ihn einfach in eine Type-Instanz übersetzen. Während im Fall von value.GetType() das Programm den Typ des value-Objekts herausfinden muss.
Eine Liste aller Eigenschaften eines Typs erhalten
Die Type-Objekte haben eine Methode namens GetProperties, die die Liste aller öffentlichen Eigenschaften im Zieltyp abrufen kann.
Die Eigenschaftsreferenzen können in einem Array vom Typ PropertyInfo gespeichert werden. Die PropertyInfo-Klasse ist im System.Reflection-Namespace definiert und verfügt über eine Vielzahl nützlicher Attribute und Methoden.
PropertyInfo[] property = exampleType.GetProperties();
Einzelne spezifische Eigenschaftenreferenzen können auch mit der GetProperty-Methode abgerufen werden.
PropertyInfo property = exampleType.GetProperty(propertyName);
Die GetProperty-Methode gibt die Eigenschaft zurück, die mit dem propertyName übereinstimmt. Andernfalls gibt sie null zurück.
Eine Liste aller Methoden eines Typs erhalten
Wir können eine Liste aller Methoden eines bestimmten Typs erhalten, indem wir die Methode GetMethods der Type-Instanz aufrufen.
Die Methodenreferenzen können in einem Array vom Typ MethodInfo gespeichert werden, das ebenfalls im Namespace System.Reflection definiert ist.
index.cs
1MethodInfo[] methods = exampleType.GetMethods();
Wir können auch eine einzelne Methode aus einer Klasse mit GetMethod abrufen:
index.cs
1MethodInfo method = exampleType.GetMethod("methodName");
Die GetMethod-Methode gibt die erste Methode zurück, die mit dem Namen methodName übereinstimmt. Wenn es keine solche Methode gibt, wird null zurückgegeben.
Die MethodInfo-Klasse hat eine Methode namens Invoke, die die folgenden Argumente annimmt:
index.cs
1Invoke(objectReference, arguments);
Hier muss objectReference ein Objekt des Typs sein, von dem die Methode stammt. Die arguments können entweder durch null im Falle von keinen Argumenten oder durch ein Array vom Typ object dargestellt werden. Zum Beispiel:
index.cs
12method.Invoke(exampleObject, null); method.Invoke(exampleObject, new object[] { "first", "second", 1, 2, 3.4f, 5.67, true });
1. Was macht die GetType-Methode in C#?
2. Wie kann man mit Reflection eine Liste aller Eigenschaften eines Typs erhalten?
3. Was ist die korrekte Methode, um eine Methode aufzurufen, die zwei Argumente vom Typ string und int hat?
Danke für Ihr Feedback!