Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist Reflexion in c#?

Was ist Reflexion in c#?

清浅
清浅Original
2019-04-28 11:04:5316444Durchsuche

Reflexion bezieht sich auf die Bereitstellung von Objekten, die Assemblys, Module und Typen kapseln. Sie können durch Reflektion dynamisch Instanzen von Typen erstellen und Typen an vorhandene Objekte binden Laufzeit usw.

Der Hauptinhalt dieses Artikels besteht darin, Ihnen detailliert vorzustellen, was Reflexion in C# ist. Ich hoffe, dass er für alle hilfreich sein wird 🎜>

[Empfohlene Kurse: Was ist Reflexion in c#?

C#-Tutorial]Was ist Reflexion

Reflexion bezieht sich auf die Bereitstellung von Objekten (Typtypen), die Baugruppen, Module und Typen kapseln. Sie können Reflektion verwenden, um dynamisch Instanzen eines Typs zu erstellen, den Typ an ein vorhandenes Objekt zu binden oder den Typ von einem vorhandenen Objekt abzurufen und dessen Methoden aufzurufen oder auf seine Felder und Eigenschaften zuzugreifen. Wenn in Ihrem Code Attribute verwendet werden, kann über Reflektion auf diese zugegriffen werden.

Reflection-Nutzungsszenarien

Funktionen, die Zugriff auf Programmmetadaten erfordern. Typen in einer Assembly prüfen und instanziieren.

Konstruieren Sie zur Laufzeit neue Typen.

Verwenden Sie Klassen von System.Reflection.Emit.

Führen Sie eine späte Bindung aus und greifen Sie auf Methoden zu, die zur Laufzeit erstellt wurden.

So verwenden Sie Reflektion, um Typen abzurufen

Es gibt zwei Möglichkeiten, Typinformationen abzurufen Die eine besteht darin, das Instanzobjekt abzurufen, und die andere darin, das Instanzobjekt über die Methoden Type.GetType und Assembly.GetType abzurufen. Dieses Instanzobjekt kann durch einen Verweis auf ein Objekt oder einen Verweis auf eine Schnittstelle abgerufen werden Der genaue Typ ist nicht bekannt. Wenn Sie mehr wissen möchten, können Sie ihn abrufen, indem Sie die auf deklarierte Methode GetType aufrufen. In einer bestimmten Methode muss ich beispielsweise ermitteln, ob Der übergebene Parameter implementiert eine bestimmte Schnittstelle. Rufen Sie in diesem Fall eine Methode der Schnittstelle auf:

…
public  void  Process(  object  processObj  ){
Type  t  =  processsObj.GetType();
if(  t.GetInterface(“ITest”)  !=null  )                    
…}…

Type.GetType- und Assembly.GetType-Methoden

Eine andere Möglichkeit, die zu erhalten Der Typ erfolgt über die Methoden Type.GetType und Assembly.GetType, z. B.:

Type  t  =  Type.GetType(“System.String”);

Es ist zu beachten, dass Sie zum Suchen einer Klasse die Assembly angeben müssen, in der sie sich befindet, oder GetType auf der aufrufen müssen Erhaltene Assembly-Instanz. Der Typ in dieser Assembly kann nur den Typnamen schreiben. Der in dieser Assembly deklarierte Typ kann auch den Assemblynamen weglassen (wenn die .Net-Assembly kompiliert wird, wird standardmäßig auf mscorlib.dll verwiesen, sofern nicht explizit). Geben Sie an, dass es bei der Kompilierung nicht zitiert werden soll), zum Beispiel:

System.Object

ist in

deklariert, und das obige ist korrekt.

wird in

deklariert, dann kann

nur eine Nullreferenz erhalten. mscorlib.dllAlso

Type t = Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0,  
Culture=neutral,  PublicKeyToken=b77a5c561934e089");

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird für alle hilfreich sein. System.String

Das obige ist der detaillierte Inhalt vonWas ist Reflexion in c#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn