Type.GetType Metódus

Definíció

Type Lekéri a megadott típust képviselő objektumot.

Túlterhelések

Name Description
GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

Lekéri a típust a megadott névvel, megadva, hogy kis- és nagybetűkre érzékeny keresést hajtson-e végre, és kivételt adjon-e, ha a típus nem található, és opcionálisan egyéni metódusokat is megadhat a szerelvény és a típus feloldásához.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

Lekéri a típust a megadott névvel, megadva, hogy a típus nem található-e kivételt, és opcionálisan egyéni metódusokat biztosít a szerelvény és a típus feloldásához.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

Lekéri a típust a megadott névvel, opcionálisan egyéni metódusokkal oldja fel a szerelvényt és a típust.

GetType()

Lekéri az aktuálisat Type.

GetType(String, Boolean)

Lekéri a Type megadott nevet, kis- és nagybetűkre érzékeny keresést hajt végre, és megadja, hogy kivételt adjon-e, ha a típus nem található.

GetType(String)

Lekéri a Type megadott nevet, és kis- és nagybetűkre érzékeny keresést hajt végre.

GetType(String, Boolean, Boolean)

Lekéri a Type megadott nevet, megadva, hogy kivételt kell-e tenni, ha a típus nem található, és hogy kis- és nagybetűkre érzékeny keresést hajt-e végre.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

Lekéri a típust a megadott névvel, megadva, hogy kis- és nagybetűkre érzékeny keresést hajtson-e végre, és kivételt adjon-e, ha a típus nem található, és opcionálisan egyéni metódusokat is megadhat a szerelvény és a típus feloldásához.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError, bool ignoreCase);
public static Type GetType(string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError, bool ignoreCase);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean, ignoreCase As Boolean) As Type

Paraméterek

typeName
String

A lekérni kívánt típus neve. Ha a typeResolver paraméter meg van adva, a típusnév bármely olyan sztring lehet, amely typeResolver képes feloldani. Ha a assemblyResolver paraméter meg van adva, vagy szabványos típusfeloldást használ, typeName szerelvény-minősített névnek kell lennie (lásd AssemblyQualifiedName), kivéve, ha a típus a jelenleg végrehajtó szerelvényben vagy mscorlib.dll/System.Private.CoreLib.dllvan, ebben az esetben elegendő megadni a névtér által minősített típusnevet.

assemblyResolver
Func<AssemblyName,Assembly>

Egy metódus, amely megkeresi és visszaadja a megadott szerelvényt typeName. A szerelvény neve objektumként lesz átadva assemblyResolverAssemblyName . Ha typeName nem tartalmazza a szerelvény nevét, assemblyResolver a függvény nem hívja meg. Ha assemblyResolver nincs megadva, a rendszer szabványos szerelvényfelbontást hajt végre.

Figyelem: Ne adjon át metódusokat ismeretlen vagy nem megbízható hívóktól. Ha így tesz, az a rosszindulatú kód jogosultságának emelkedését eredményezheti. Csak az Ön által megadott vagy már ismert metódusokat használja.

typeResolver
Func<Assembly,String,Boolean,Type>

Egy metódus, amely megkeresi és visszaadja a szerelvény által typeName megadott típust, amelyet assemblyResolver a standard szerelvényfelbontás vagy a standard szerelvényfeloldás ad vissza. Ha nincs megadva szerelvény, a metódus megadhat egyet. A metódus egy paramétert is használ, amely meghatározza, hogy a kis- és nagybetűket nem érzékelyítő keresés hajtja-e végre; a paraméter értéke ignoreCase az adott paraméternek lesz átadva.

Figyelem: Ne adjon át metódusokat ismeretlen vagy nem megbízható hívóktól.

throwOnError
Boolean

true kivétel kiírása, ha a típus nem található; false visszatéréshez null. A beállítás false néhány egyéb kivételfeltételt is letilt, de nem mindegyiket. Lásd a Kivételek szakaszt.

ignoreCase
Boolean

truea kis- és nagybetűk megkülönböztetésére szolgáló keresés typeNamefalse végrehajtásához a kis- és nagybetűket megkülönböztető keresés végrehajtásáhoztypeName.

Válaszok

A megadott névvel rendelkező típus. Ha a típus nem található, a throwOnError paraméter megadja, hogy a rendszer visszaadja-e null a hibát, vagy kivételt jelez. Bizonyos esetekben a rendszer kivételt vet ki, függetlenül az értéktől throwOnError. Lásd a Kivételek szakaszt.

Kivételek

typeName az null.

A rendszer meghív egy osztály inicializálót, és kivételt jelez.

throwOnError és true a típus nem található.

-vagy-

throwOnError typeName érvénytelen true karaktereket tartalmaz, például beágyazott lapot.

-vagy-

throwOnError typeName üres true sztring.

-vagy-

throwOnError typeName érvénytelen true méretű tömbtípust jelöl.

-vagy-

typeNameegy tömböt jelöl.TypedReference

Hiba akkor fordul elő, ha typeName egy típusnév és egy szerelvénynév lesz elemezve (például ha az egyszerű típusnév tartalmaz egy nem kibontott speciális karaktert).

-vagy-

throwOnError typeName érvénytelen true szintaxist tartalmaz (például "MyType[,*;]").

-vagy-

typeName olyan általános típust jelöl, amely mutatótípussal, ByRef típussal vagy Void annak egyik típusargumentumaként rendelkezik.

-vagy-

typeName olyan általános típust jelöl, amely helytelen számú típusargumentummal rendelkezik.

-vagy-

typeName egy általános típust jelöl, és az egyik típusargumentum nem felel meg a megfelelő típusparaméter korlátainak.

throwOnError van, true és a szerelvény vagy annak egyik függősége nem található.

A szerelvény vagy annak egyik függősége megtalálható, de nem tölthető be.

-vagy-

typeName érvénytelen szerelvénynevet tartalmaz.

-vagy-

typeName egy érvényes szerelvénynév típusnév nélkül.

A szerelvény vagy annak egyik függősége nem érvényes szerelvény az aktuálisan betöltött futtatókörnyezethez.

Megjegyzések

.NET Core 3.0-s és újabb verzióiban, ha assemblyResolver null, akkor az API által aktivált szerelvénybetöltéseket a AssemblyLoadContext.CurrentContextualReflectionContext aktuális értéke befolyásolja.

Az API-val kapcsolatos további információkért lásd a Type.GetType kiegészítő API-megjegyzéseit.

A következőre érvényes:

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

Lekéri a típust a megadott névvel, megadva, hogy a típus nem található-e kivételt, és opcionálisan egyéni metódusokat biztosít a szerelvény és a típus feloldásához.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError);
public static Type GetType(string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean) As Type

Paraméterek

typeName
String

A lekérni kívánt típus neve. Ha a typeResolver paraméter meg van adva, a típusnév bármely olyan sztring lehet, amely typeResolver képes feloldani. Ha a assemblyResolver paraméter meg van adva, vagy szabványos típusfeloldást használ, typeName szerelvény-minősített névnek kell lennie (lásd AssemblyQualifiedName), kivéve, ha a típus a jelenleg végrehajtó szerelvényben vagy mscorlib.dll/System.Private.CoreLib.dllvan, ebben az esetben elegendő megadni a névtér által minősített típusnevet.

assemblyResolver
Func<AssemblyName,Assembly>

Egy metódus, amely megkeresi és visszaadja a megadott szerelvényt typeName. A szerelvény neve objektumként lesz átadva assemblyResolverAssemblyName . Ha typeName nem tartalmazza a szerelvény nevét, assemblyResolver a függvény nem hívja meg. Ha assemblyResolver nincs megadva, a rendszer szabványos szerelvényfelbontást hajt végre.

Figyelem: Ne adjon át metódusokat ismeretlen vagy nem megbízható hívóktól. Ha így tesz, az a rosszindulatú kód jogosultságának emelkedését eredményezheti. Csak az Ön által megadott vagy már ismert metódusokat használja.

typeResolver
Func<Assembly,String,Boolean,Type>

Egy metódus, amely megkeresi és visszaadja a szerelvény által typeName megadott típust, amelyet assemblyResolver a standard szerelvényfelbontás vagy a standard szerelvényfeloldás ad vissza. Ha nincs megadva szerelvény, a metódus megadhat egyet. A metódus egy paramétert is használ, amely meghatározza, hogy a kis- és nagybetűket nem érzékelyítő keresés hajtja-e végre; false paraméternek lesz átadva.

Figyelem: Ne adjon át metódusokat ismeretlen vagy nem megbízható hívóktól.

throwOnError
Boolean

true kivétel kiírása, ha a típus nem található; false visszatéréshez null. A beállítás false néhány egyéb kivételfeltételt is letilt, de nem mindegyiket. Lásd a Kivételek szakaszt.

Válaszok

A megadott névvel rendelkező típus. Ha a típus nem található, a throwOnError paraméter megadja, hogy a rendszer visszaadja-e null a hibát, vagy kivételt jelez. Bizonyos esetekben a rendszer kivételt vet ki, függetlenül az értéktől throwOnError. Lásd a Kivételek szakaszt.

Kivételek

typeName az null.

A rendszer meghív egy osztály inicializálót, és kivételt jelez.

throwOnError és true a típus nem található.

-vagy-

throwOnError typeName érvénytelen true karaktereket tartalmaz, például beágyazott lapot.

-vagy-

throwOnError typeName üres true sztring.

-vagy-

throwOnError typeName érvénytelen true méretű tömbtípust jelöl.

-vagy-

typeNameegy tömböt jelöl.TypedReference

Hiba akkor fordul elő, ha typeName egy típusnév és egy szerelvénynév lesz elemezve (például ha az egyszerű típusnév tartalmaz egy nem kibontott speciális karaktert).

-vagy-

throwOnError typeName érvénytelen true szintaxist tartalmaz (például "MyType[,*;]").

-vagy-

typeName olyan általános típust jelöl, amely mutatótípussal, ByRef típussal vagy Void annak egyik típusargumentumaként rendelkezik.

-vagy-

typeName olyan általános típust jelöl, amely helytelen számú típusargumentummal rendelkezik.

-vagy-

typeName egy általános típust jelöl, és az egyik típusargumentum nem felel meg a megfelelő típusparaméter korlátainak.

throwOnError van, true és a szerelvény vagy annak egyik függősége nem található.

-vagy-

typeName érvénytelen szerelvénynevet tartalmaz.

-vagy-

typeName egy érvényes szerelvénynév típusnév nélkül.

A szerelvény vagy annak egyik függősége megtalálható, de nem tölthető be.

A szerelvény vagy annak egyik függősége nem érvényes az aktuálisan betöltött futtatókörnyezetre.

Megjegyzések

A metódus használati forgatókönyvei és a assemblyResolver paraméterek részletei typeResolver megtalálhatók a metódus túlterhelésében GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) .

A metódus túlterhelésének meghívása ugyanaz, mint a metódus túlterhelésének GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) meghívása és a ignoreCase paraméter megadásafalse.

A következőre érvényes:

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

Lekéri a típust a megadott névvel, opcionálisan egyéni metódusokkal oldja fel a szerelvényt és a típust.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver);
public static Type GetType(string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type)) As Type

Paraméterek

typeName
String

A lekérni kívánt típus neve. Ha a typeResolver paraméter meg van adva, a típusnév bármely olyan sztring lehet, amely typeResolver képes feloldani. Ha a assemblyResolver paraméter meg van adva, vagy szabványos típusfeloldást használ, typeName szerelvény-minősített névnek kell lennie (lásd AssemblyQualifiedName), kivéve, ha a típus a jelenleg végrehajtó szerelvényben vagy mscorlib.dll/System.Private.CoreLib.dllvan, ebben az esetben elegendő megadni a névtér által minősített típusnevet.

assemblyResolver
Func<AssemblyName,Assembly>

Egy metódus, amely megkeresi és visszaadja a megadott szerelvényt typeName. A szerelvény neve objektumként lesz átadva assemblyResolverAssemblyName . Ha typeName nem tartalmazza a szerelvény nevét, assemblyResolver a függvény nem hívja meg. Ha assemblyResolver nincs megadva, a rendszer szabványos szerelvényfelbontást hajt végre.

Figyelem: Ne adjon át metódusokat ismeretlen vagy nem megbízható hívóktól. Ha így tesz, az a rosszindulatú kód jogosultságának emelkedését eredményezheti. Csak az Ön által megadott vagy már ismert metódusokat használja.

typeResolver
Func<Assembly,String,Boolean,Type>

Egy metódus, amely megkeresi és visszaadja a szerelvény által typeName megadott típust, amelyet assemblyResolver a standard szerelvényfelbontás vagy a standard szerelvényfeloldás ad vissza. Ha nincs megadva szerelvény, a typeResolver metódus megadhat egyet. A metódus egy paramétert is használ, amely meghatározza, hogy a kis- és nagybetűket nem érzékelyítő keresés hajtja-e végre; false paraméternek lesz átadva.

Figyelem: Ne adjon át metódusokat ismeretlen vagy nem megbízható hívóktól.

Válaszok

A megadott névvel rendelkező típus, vagy null ha a típus nem található.

Kivételek

typeName az null.

A rendszer meghív egy osztály inicializálót, és kivételt jelez.

Hiba akkor fordul elő, ha typeName egy típusnév és egy szerelvénynév lesz elemezve (például ha az egyszerű típusnév tartalmaz egy nem kibontott speciális karaktert).

-vagy-

typeName olyan általános típust jelöl, amely mutatótípussal, ByRef típussal vagy Void annak egyik típusargumentumaként rendelkezik.

-vagy-

typeName olyan általános típust jelöl, amely helytelen számú típusargumentummal rendelkezik.

-vagy-

typeName egy általános típust jelöl, és az egyik típusargumentum nem felel meg a megfelelő típusparaméter korlátainak.

typeNameérvénytelen típust jelöl, például egy tömböt.TypedReference

A szerelvény vagy annak egyik függősége megtalálható, de nem tölthető be.

-vagy-

typeName érvénytelen szerelvénynevet tartalmaz.

-vagy-

typeName egy érvényes szerelvénynév típusnév nélkül.

A szerelvény vagy annak egyik függősége nem érvényes az aktuálisan betöltött futtatókörnyezetre.

Megjegyzések

A metódus használati forgatókönyvei és a assemblyResolver paraméterek részletei typeResolver megtalálhatók a metódus túlterhelésében GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) .

Note

Ha typeName nem található, a metódus hívása GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)nullad vissza. Nem ad kivételt. Annak szabályozásához, hogy a rendszer kivételt jelez-e, hívja meg a GetType paraméterrel throwOnError rendelkező metódus túlterhelését.

A metódus túlterhelésének meghívása ugyanaz, mint a metódus túlterhelésének GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) meghívása, valamint a paraméterek és ignoreCase a throwOnError paraméterek megadásafalse.

A következőre érvényes:

GetType()

Lekéri az aktuálisat Type.

public:
 virtual Type ^ GetType();
public:
 Type ^ GetType();
public Type GetType();
override this.GetType : unit -> Type
Public Function GetType () As Type

Válaszok

Az aktuális Type.

Megvalósítás

Kivételek

A rendszer meghív egy osztály inicializálót, és kivételt jelez.

Lásd még

A következőre érvényes:

GetType(String, Boolean)

Lekéri a Type megadott nevet, kis- és nagybetűkre érzékeny keresést hajt végre, és megadja, hogy kivételt adjon-e, ha a típus nem található.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError);
public static Type GetType(string typeName, bool throwOnError);
static member GetType : string * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean) As Type

Paraméterek

typeName
String

A lekérendő típus szerelvény-minősített neve. Lásd a(z) AssemblyQualifiedName. Ha a típus a jelenleg futó szerelvényben vagy mscorlib.dll/System.Private.CoreLib.dlltalálható, elegendő megadni a névtér által minősített típusnevet.

throwOnError
Boolean

true kivétel kiírása, ha a típus nem található; false visszatéréshez null. A beállítás false néhány egyéb kivételfeltételt is letilt, de nem mindegyiket. Lásd a Kivételek szakaszt.

Válaszok

A megadott névvel rendelkező típus. Ha a típus nem található, a throwOnError paraméter megadja, hogy a rendszer visszaadja-e null a hibát, vagy kivételt jelez. Bizonyos esetekben a rendszer kivételt vet ki, függetlenül az értéktől throwOnError. Lásd a Kivételek szakaszt.

Kivételek

typeName az null.

A rendszer meghív egy osztály inicializálót, és kivételt jelez.

throwOnError és true a típus nem található.

-vagy-

throwOnError typeName érvénytelen true karaktereket tartalmaz, például beágyazott lapot.

-vagy-

throwOnError typeName üres true sztring.

-vagy-

throwOnError typeName érvénytelen true méretű tömbtípust jelöl.

-vagy-

typeNameegy tömböt jelöl.TypedReference

throwOnError typeName érvénytelen true szintaxist tartalmaz. Például: "MyType[,*;]".

-vagy-

typeName olyan általános típust jelöl, amely mutatótípussal, ByRef típussal vagy Void annak egyik típusargumentumaként rendelkezik.

-vagy-

typeName olyan általános típust jelöl, amely helytelen számú típusargumentummal rendelkezik.

-vagy-

typeName egy általános típust jelöl, és az egyik típusargumentum nem felel meg a megfelelő típusparaméter korlátainak.

throwOnError van, true és a szerelvény vagy annak egyik függősége nem található.

A szerelvény vagy annak egyik függősége megtalálható, de nem tölthető be.

Megjegyzés: Az .NET Windows Áruházbeli alkalmazások vagy a Portable Class Library esetében inkább az alaposztály kivételét IOException.

A szerelvény vagy annak egyik függősége nem érvényes az aktuálisan betöltött futtatókörnyezetre.

Példák

Az alábbi példa beolvassa a típust System.Int32 , és az adott típusú objektummal jeleníti meg a FullName tulajdonságot System.Int32. Ha egy típusobjektum olyan szerelvényre hivatkozik, amely nem létezik, ez a példa kivételt vet fel.

using System;

class Example
{
     public static void Main()
     {
         try {
             // Get the type of a specified class.
             Type myType1 = Type.GetType("System.Int32");
             Console.WriteLine("The full name is {0}.\n", myType1.FullName);
         }
         catch (TypeLoadException e)
         {
            Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
         }

         try {
             // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Type myType2 = Type.GetType("NoneSuch", true);
             Console.WriteLine("The full name is {0}.", myType2.FullName);
         }
         catch(TypeLoadException e) {
            Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
         }
     }
}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
open System

try
    // Get the type of a specified class.
    let myType1 = Type.GetType "System.Int32"
    printfn $"The full name is {myType1.FullName}.\n"
with :? TypeLoadException as e ->
    printfn $"{e.GetType().Name}: Unable to load type System.Int32"

try
    // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
    let myType2 = Type.GetType("NoneSuch", true)
    printfn $"The full name is {myType2.FullName}."
with :? TypeLoadException as e ->
    printfn $"{e.GetType().Name}: Unable to load type NoneSuch"
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
Class Example
     Public Shared Sub Main()
         Try
             ' Get the type of the specified class.
             Dim myType1 As Type = Type.GetType("System.Int32")
             Console.WriteLine("The full name is {0}.", myType1.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type System.Int32",
                               e.GetType().Name)
         End Try

         Console.WriteLine()

         Try
             ' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Dim myType2 As Type = Type.GetType("NoneSuch", True)
             Console.WriteLine("The full name is {0}.", myType2.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
         End Try
     End Sub
End Class
' The example displays the following output:
'       The full name is System.Int32.
'
'       TypeLoadException: Unable to load type NoneSuch

Megjegyzések

A metódussal GetType beszerezhet egy objektumot egy Type másik szerelvény egy típusához, ha ismeri a szerelvény által minősített nevet, amely a következőből AssemblyQualifiedNamekérhető le: . GetType a következőben megadott szerelvény betöltését typeNameokozza: A metódussal Assembly.Load egy szerelvényt is betölthet, majd az objektumokat a vagy Assembly.GetTypes a Assembly.GetType metódus használatával is lekérhetiType. Ha egy típus fordításkor a program által ismert szerelvényben található, akkor hatékonyabb a typeof használata C# nyelven vagy a Visual Basic GetType operátora.

csak .NET keretrendszer: GetType csak lemezről betöltött szerelvényeken működik. Ha a szolgáltatások használatával System.Reflection.Emit definiált dinamikus szerelvényben definiált típus keresésére hív GetType fel, inkonzisztens viselkedést kaphat. A viselkedés attól függ, hogy a dinamikus szerelvény állandó-e, vagyis az RunAndSave enumerálás vagy Save a System.Reflection.Emit.AssemblyBuilderAccess hozzáférési módok használatával jön létre. Ha a dinamikus szerelvény állandó, és a meghívás előtt GetType lemezre lett írva, a betöltő megkeresi a lemezen mentett szerelvényt, betölti a szerelvényt, és lekéri a típust az adott szerelvényből. Ha a rendszer nem menti a szerelvényt a lemezre, amikor GetType meghívják, a metódus ad vissza null. GetType nem érti az átmeneti dinamikus szerelvényeket; ezért egy átmeneti dinamikus szerelvény típusának lekérésére való hívás GetType eredménye null.

A .NET-keretrendszerben a GetType dinamikus modulon való használatához iratkozzon fel a AppDomain.AssemblyResolve eseményre, és mentsen GetType. Ellenkező esetben a szerelvény két példányát fogja megkapni a memóriában.

.NET Core 3.0-s és újabb verzióiban az API által aktivált szerelvényterheléseket a AssemblyLoadContext.CurrentContextualReflectionContext aktuális értéke befolyásolja.

A throwOnError paraméter megadja, hogy mi történik, ha a típus nem található, és letilt bizonyos egyéb kivételfeltételeket is, a Kivételek szakaszban leírtak szerint. Néhány kivételt a rendszer a megadott értéktől throwOnErrorfüggetlenül ad ki. Ha például a típus megtalálható, de nem tölthető be, a rendszer akkor is eldobja a típust, TypeLoadException ha throwOnError igen false.

Az alábbi táblázat azt mutatja be, hogy egy alaposztály mely tagjait adják vissza a metódusok egy Get típuson való tükrözéskor.

Tagtípus Static Nem statikus
Constructor No No
Field No Yes. A mezők mindig név és aláírás alapján rejthetők el.
Esemény Nem alkalmazható A gyakori típusrendszerszabály az, hogy az öröklés megegyezik a tulajdonságot megvalósító metódusok öröklésével. A tükröződés a tulajdonságokat név és aláírás elrejtéseként kezeli. Lásd az alábbi 2. megjegyzést.
Módszer No Yes. A metódusok (mind a virtuális, mind a nem virtuális) elrejthetők név szerint vagy elrejthetők név és aláírás alapján.
Beágyazott típus No No
Property Nem alkalmazható A gyakori típusrendszerszabály az, hogy az öröklés megegyezik a tulajdonságot megvalósító metódusok öröklésével. A tükröződés a tulajdonságokat név és aláírás elrejtéseként kezeli. Lásd az alábbi 2. megjegyzést.
  1. A név és aláírás szerinti elrejtés az aláírás összes részét figyelembe veszi, beleértve az egyéni módosítókat, a visszatérési típusokat, a paramétertípusokat, a sentineleket és a nem kezelt hívási konvenciókat. Ez egy bináris összehasonlítás.

  2. A reflexió során a tulajdonságok és események név és szignatúra szerint vannak elrejtve. Ha az alaposztálynak van egy beolvasási és egy beállítási kiegészítővel rendelkező tulajdonsága, de a származtatott osztálynak csak beolvasási kiegészítője van, a származtatott osztály tulajdonsága elrejti az alaposztály tulajdonságát, és nem tudja majd elérni a beállítót az alaposztályban.

  3. Az egyéni attribútumok nem részei a gyakori típusrendszernek.

A rendszer csak akkor keres tömböket vagy COM-típusokat, ha már betöltötte őket az elérhető osztályok táblájába.

typeName lehet a névtér által minősített típusnév, vagy egy szerelvény által minősített név, amely tartalmazza a szerelvénynév specifikációját. Lásd a(z) AssemblyQualifiedName.

Ha typeName a névteret tartalmazza, de a szerelvény nevét nem, ez a metódus csak a hívó objektum szerelvényében keres, és ebben a sorrendben mscorlib.dll/System.Private.CoreLib.dll. Ha a typeName teljes mértékben a részleges vagy teljes szerelvénynévvel van minősítve, ez a metódus a megadott szerelvényben keres. Ha a szerelvénynek erős neve van, teljes szerelvénynévre van szükség.

A AssemblyQualifiedName tulajdonság egy teljesen minősített típusnevet ad vissza, beleértve a beágyazott típusokat, a szerelvény nevét és az általános argumentumokat. A közös nyelvi futtatókörnyezetet támogató összes fordító kibocsátja a beágyazott osztály egyszerű nevét, a tükröződés pedig a lekérdezéskor a következő konvencióknak megfelelően strukturált nevet hoz létre.

Note

A processzorarchitektúra a szerelvényidentitás része, és szerelvénynév-sztringek részeként adható meg. Például: "ProcessorArchitecture=msil". Kompatibilitási okokból azonban nem szerepel a AssemblyQualifiedName tulajdonság által visszaadott sztringben. A típusokat úgy is betöltheti, hogy létrehoz egy AssemblyName objektumot, és átadja azt a Load metódus megfelelő túlterhelésének. Ezután a metódus használatával betöltheti a Assembly.GetType típusokat a szerelvényből. Lásd még: AssemblyName.ProcessorArchitecture.

Határoló Meaning
Fordított perjel (\) Escape karakter.
Backtick (') Egy vagy több számjegyet előz meg, amely egy általános típus nevének végén található típusparaméterek számát jelöli.
Szögletes zárójelek ([]) Általános típusú argumentumlistát csatol egy létrehozott általános típushoz; egy típusargumentumlistán belül csatoljon egy szerelvény által minősített típust.
Vessző (,) Megelőzi a szerelvény nevét.
Időszak (.) Névtérazonosítókat jelöl.
Pluszjel (+) Beágyazott osztályt előz meg.

Egy osztály teljes neve például így nézhet ki:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Ha a névtér TopNamespace.Sub+Namespace, akkor a sztringnek a pluszjel (+) elé kell lépnie egy escape karakterrel (\), hogy ne lehessen beágyazott elválasztóként értelmezni. A tükröződés a következőképpen bocsátja ki ezt a sztringet:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly

A "++" "\+\+" lesz, a "\" pedig "\\\" lesz.

Ez a minősített név megőrizhető, és később használható a Type. A kereséshez és a betöltéshez Typehasználja GetType csak a típusnevet, vagy a szerelvény minősített típusnevét. GetType a típusnévvel csak a Type hívó szerelvényében, majd a Rendszerszerelvényben fogja keresni. GetType A szerelvény minősített típusnevével bármelyik szerelvényben megkeresi a Type szerelvényt.

A típusnevek tartalmazhatnak olyan záró karaktereket, amelyek a típussal kapcsolatos további információkat jelölnek, például azt, hogy a típus hivatkozástípus, mutatótípus vagy tömbtípus-e. Ha a típusnevet a záró karakterek nélkül szeretné lekérni, használja t.GetElementType().ToString()a következőt: hol t található a típus.

A szóközök a szerelvény neve kivételével minden típusnév-összetevőben relevánsak. A szerelvény nevében a "," elválasztó előtti szóközök relevánsak, de a "," elválasztó utáni szóközök figyelmen kívül lesznek hagyva.

Az általános típus neve egy háttérrel (') végződik, amelyet az általános típusú argumentumok számát jelző számjegyek követnek. Ennek a névkezelésnek az a célja, hogy lehetővé tegye a fordítók számára, hogy azonos nevű, de különböző számú típusparaméterrel rendelkező általános típusokat támogassanak, amelyek ugyanabban a hatókörben fordulnak elő. A tükröződés például a Tuple`1 és a Tuple`2 nevet adja vissza az általános Tuple(Of T) és Tuple(Of T0, T1) Visual Basic, vagy Tuple<T> és Tuple<T0, T1> a Visual C#-ban.

Általános típusok esetén a típusargumentumok listája szögletes zárójelek közé kerül, a típusargumentumokat pedig vesszők választják el egymástól. Egy általános Dictionary<TKey,TValue> típusparaméter például két típusparaméterrel rendelkezik. A Dictionary<TKey,TValue> típuskulcsok String közül MyType a következők jelölhetők:

System.Collections.Generic.Dictionary`2[System.String,MyType]

Ha egy szerelvény-minősített típust szeretne megadni egy típusargumentumlistában, a szerelvény által minősített típust zárójelek közé kell foglalnia. Ellenkező esetben a szerelvény által minősített név részeit elválasztó vesszőket a rendszer további típusargumentumok elválasztójaként értelmezi. Például egy Dictionary<TKey,TValue>MyType MyAssembly.dlltípusú kulcsokat Stringtartalmazó MyAssembly.dllaz alábbiak szerint adható meg:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")

Note

A szerelvény-minősített típus csak akkor zárható szögletes zárójelbe, ha egy típusparaméter-listában jelenik meg. A típusparaméter-listákban a szerelvényekben a minősített és a nem minősített típusok keresésére vonatkozó szabályok megegyeznek a minősített és a nem minősített nemgenerikus típusok szabályaival.

A null értékű típusok az általános típusok speciális esetei. A null értékű értékeket Int32 például a "System.Nullable'1[System.Int32]" sztring jelöli.

Note

A null értékű típusokat típusoperátorok használatával is lekérheti. A null értékű Boolean típust például a C# typeof(Nullable<bool>) és GetType(Nullable(Of Boolean)) adja vissza Visual Basic.

Az alábbi táblázat a különböző típusokhoz GetType használt szintaxist mutatja be.

A lekéréshez Használat
Null értékű Int32 Type.GetType("System.Nullable`1[System.Int32]")
Nem felügyelt mutató a MyType Type.GetType("MyType*")
Nem felügyelt mutató egy mutatóra MyType Type.GetType("MyType**")
Felügyelt mutató vagy hivatkozás MyType Type.GetType("MyType&"). Vegye figyelembe, hogy a mutatókkal ellentétben a hivatkozások egy szintre korlátozódnak.
Szülőosztály és beágyazott osztály Type.GetType("MyParentClass+MyNestedClass")
Egydimenziós tömb 0 alsó határával Type.GetType("MyArray[]")
Ismeretlen alsó határral rendelkező egydimenziós tömb Type.GetType("MyArray[*]")
N dimenziós tömb A zárójeleken belüli vessző (,) összesen n-1 alkalommal. Például System.Object[,,] egy háromdimenziós Object tömböt jelöl.
Kétdimenziós tömb tömbje Type.GetType("MyArray[][]")
Négyszögletes kétdimenziós tömb ismeretlen alsó határokkal Type.GetType("MyArray[,]")
Egy általános típus egy típusargumentummal Type.GetType("MyGenericType`1[MyType]")
Általános típus két típusargumentummal Type.GetType("MyGenericType`2[MyType,AnotherType]")
Általános típus két szerelvény-minősített típusargumentummal Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Szerelvény-minősített általános típus szerelvény-minősített típusargumentummal Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Olyan általános típus, amelynek típusargumentuma egy általános típus, két típusargumentummal Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Lásd még

A következőre érvényes:

GetType(String)

Lekéri a Type megadott nevet, és kis- és nagybetűkre érzékeny keresést hajt végre.

public:
 static Type ^ GetType(System::String ^ typeName);
public static Type GetType(string typeName);
static member GetType : string -> Type
Public Shared Function GetType (typeName As String) As Type

Paraméterek

typeName
String

A lekérendő típus szerelvény-minősített neve. Lásd a(z) AssemblyQualifiedName. Ha a típus a jelenleg futó szerelvényben vagy mscorlib.dll/System.Private.CoreLib.dlltalálható, elegendő megadni a névtér által minősített típusnevet.

Válaszok

A megadott névvel rendelkező típus, ha megtalálható; egyéb esetben. null

Kivételek

typeName az null.

A rendszer meghív egy osztály inicializálót, és kivételt jelez.

typeName olyan általános típust jelöl, amely mutatótípussal, ByRef típussal vagy Void annak egyik típusargumentumaként rendelkezik.

-vagy-

typeName olyan általános típust jelöl, amely helytelen számú típusargumentummal rendelkezik.

-vagy-

typeName egy általános típust jelöl, és az egyik típusargumentum nem felel meg a megfelelő típusparaméter korlátainak.

typeNameérvénytelen típust jelöl, például egy tömböt.TypedReference

A szerelvény vagy annak egyik függősége megtalálható, de nem tölthető be.

Megjegyzés: Az .NET Windows Áruházbeli alkalmazások vagy a Portable Class Library esetében inkább az alaposztály kivételét IOException.

A szerelvény nem érvényes az aktuálisan betöltött futtatókörnyezetre.

Példák

Az alábbi példa beolvassa a típust System.Int32 , és az adott típusú objektummal jeleníti meg a FullName tulajdonságot System.Int32.

using System;

class Example
{
     public static void Main()
     {
         try {
             // Get the type of a specified class.
             Type myType1 = Type.GetType("System.Int32");
             Console.WriteLine("The full name is {0}.\n", myType1.FullName);
         }
         catch (TypeLoadException e)
         {
            Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
         }

         try {
             // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Type myType2 = Type.GetType("NoneSuch", true);
             Console.WriteLine("The full name is {0}.", myType2.FullName);
         }
         catch(TypeLoadException e) {
            Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
         }
     }
}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
open System

try
    // Get the type of a specified class.
    let myType1 = Type.GetType "System.Int32"
    printfn $"The full name is {myType1.FullName}.\n"
with :? TypeLoadException as e ->
    printfn $"{e.GetType().Name}: Unable to load type System.Int32"

try
    // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
    let myType2 = Type.GetType("NoneSuch", true)
    printfn $"The full name is {myType2.FullName}."
with :? TypeLoadException as e ->
    printfn $"{e.GetType().Name}: Unable to load type NoneSuch"
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
Class Example
     Public Shared Sub Main()
         Try
             ' Get the type of the specified class.
             Dim myType1 As Type = Type.GetType("System.Int32")
             Console.WriteLine("The full name is {0}.", myType1.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type System.Int32",
                               e.GetType().Name)
         End Try

         Console.WriteLine()

         Try
             ' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Dim myType2 As Type = Type.GetType("NoneSuch", True)
             Console.WriteLine("The full name is {0}.", myType2.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
         End Try
     End Sub
End Class
' The example displays the following output:
'       The full name is System.Int32.
'
'       TypeLoadException: Unable to load type NoneSuch

Megjegyzések

A metódussal GetType beszerezhet egy objektumot egy Type másik szerelvény egy típusához, ha ismeri a szerelvény által minősített nevet, amely a következőből AssemblyQualifiedNamekérhető le: . GetType a következőben megadott szerelvény betöltését typeNameokozza: A metódussal Assembly.Load egy szerelvényt is betölthet, majd az objektumokat a vagy Assembly.GetTypes a Assembly.GetType metódus használatával is lekérhetiType. Ha egy típus fordításkor a program által ismert szerelvényben található, akkor hatékonyabb a typeof használata C# nyelven vagy a Visual Basic GetType operátora.

Note

Ha typeName nem található, a metódus hívása GetType(String)nullad vissza. Nem ad kivételt. Annak szabályozásához, hogy a rendszer kivételt jelez-e, hívja meg a GetType paraméterrel throwOnError rendelkező metódus túlterhelését.

csak .NET keretrendszer: GetType csak lemezről betöltött szerelvényeken működik. Ha a szolgáltatások használatával System.Reflection.Emit definiált dinamikus szerelvényben definiált típus keresésére hív GetType fel, inkonzisztens viselkedést kaphat. A viselkedés attól függ, hogy a dinamikus szerelvény állandó-e, vagyis az RunAndSave enumerálás vagy Save a System.Reflection.Emit.AssemblyBuilderAccess hozzáférési módok használatával jön létre. Ha a dinamikus szerelvény állandó, és a meghívás előtt GetType lemezre lett írva, a betöltő megkeresi a lemezen mentett szerelvényt, betölti a szerelvényt, és lekéri a típust az adott szerelvényből. Ha a rendszer nem menti a szerelvényt a lemezre, amikor GetType meghívják, a metódus ad vissza null. GetType nem érti az átmeneti dinamikus szerelvényeket; ezért egy átmeneti dinamikus szerelvény típusának lekérésére való hívás GetType eredménye null.

A .NET-keretrendszerben a GetType dinamikus modulon való használatához iratkozzon fel a AppDomain.AssemblyResolve eseményre, és mentsen GetType. Ellenkező esetben a szerelvény két példányát fogja megkapni a memóriában.

.NET Core 3.0-s és újabb verzióiban az API által aktivált szerelvényterheléseket a AssemblyLoadContext.CurrentContextualReflectionContext aktuális értéke befolyásolja.

Az alábbi táblázat azt mutatja be, hogy egy alaposztály mely tagjait adják vissza a metódusok egy Get típuson való tükrözéskor.

Tagtípus Static Nem statikus
Constructor No No
Field No Yes. A mezők mindig név és aláírás alapján rejthetők el.
Esemény Nem alkalmazható A gyakori típusrendszerszabály az, hogy az öröklés megegyezik a tulajdonságot megvalósító metódusok öröklésével. A tükröződés a tulajdonságokat név és aláírás elrejtéseként kezeli. Lásd az alábbi 2. megjegyzést.
Módszer No Yes. A metódusok (mind a virtuális, mind a nem virtuális) elrejthetők név szerint vagy elrejthetők név és aláírás alapján.
Beágyazott típus No No
Property Nem alkalmazható A gyakori típusrendszerszabály az, hogy az öröklés megegyezik a tulajdonságot megvalósító metódusok öröklésével. A tükröződés a tulajdonságokat név és aláírás elrejtéseként kezeli. Lásd az alábbi 2. megjegyzést.
  1. A név és aláírás szerinti elrejtés az aláírás összes részét figyelembe veszi, beleértve az egyéni módosítókat, a visszatérési típusokat, a paramétertípusokat, a sentineleket és a nem kezelt hívási konvenciókat. Ez egy bináris összehasonlítás.

  2. A reflexió során a tulajdonságok és események név és szignatúra szerint vannak elrejtve. Ha az alaposztálynak van egy beolvasási és egy beállítási kiegészítővel rendelkező tulajdonsága, de a származtatott osztálynak csak beolvasási kiegészítője van, a származtatott osztály tulajdonsága elrejti az alaposztály tulajdonságát, és nem tudja majd elérni a beállítót az alaposztályban.

  3. Az egyéni attribútumok nem részei a gyakori típusrendszernek.

A rendszer csak akkor keres tömböket vagy COM-típusokat, ha már betöltötte őket az elérhető osztályok táblájába.

typeName lehet a névtér által minősített típusnév, vagy egy szerelvény által minősített név, amely tartalmazza a szerelvénynév specifikációját. Lásd a(z) AssemblyQualifiedName.

Ha typeName a névteret tartalmazza, de a szerelvény nevét nem, ez a metódus csak a hívó objektum szerelvényében keres, és ebben a sorrendben mscorlib.dll/System.Private.CoreLib.dll. Ha a typeName teljes mértékben a részleges vagy teljes szerelvénynévvel van minősítve, ez a metódus a megadott szerelvényben keres. Ha a szerelvénynek erős neve van, teljes szerelvénynévre van szükség.

A AssemblyQualifiedName tulajdonság egy teljesen minősített típusnevet ad vissza, beleértve a beágyazott típusokat, a szerelvény nevét és az általános típusargumentumokat. A közös nyelvi futtatókörnyezetet támogató összes fordító kibocsátja a beágyazott osztály egyszerű nevét, a tükröződés pedig a lekérdezéskor a következő konvencióknak megfelelően strukturált nevet hoz létre.

Note

A processzorarchitektúra a szerelvényidentitás része, és szerelvénynév-sztringek részeként adható meg. Például: "ProcessorArchitecture=msil". Kompatibilitási okokból azonban nem szerepel a AssemblyQualifiedName tulajdonság által visszaadott sztringben. A típusokat úgy is betöltheti, hogy létrehoz egy AssemblyName objektumot, és átadja azt a Load metódus megfelelő túlterhelésének. Ezután a metódus használatával betöltheti a Assembly.GetType típusokat a szerelvényből. Lásd még: AssemblyName.ProcessorArchitecture.

Határoló Meaning
Fordított perjel (\) Escape karakter.
Backtick (') Egy vagy több számjegyet előz meg, amely egy általános típus nevének végén található típusparaméterek számát jelöli.
Szögletes zárójelek ([]) Általános típusú argumentumlistát csatol egy létrehozott általános típushoz; egy típusargumentumlistán belül csatoljon egy szerelvény által minősített típust.
Vessző (,) Megelőzi a szerelvény nevét.
Időszak (.) Névtérazonosítókat jelöl.
Pluszjel (+) Beágyazott osztályt előz meg.

Egy osztály teljes neve például így nézhet ki:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Ha a névtér TopNamespace.Sub+Namespace, akkor a sztringnek a pluszjel (+) elé kell lépnie egy escape karakterrel (\), hogy ne lehessen beágyazott elválasztóként értelmezni. A tükröződés a következőképpen bocsátja ki ezt a sztringet:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly

A "++" "\+\+" lesz, a "\" pedig "\\\" lesz.

Ez a minősített név megőrizhető, és később használható a Type. A kereséshez és a betöltéshez Typehasználja GetType csak a típusnevet, vagy a szerelvény minősített típusnevét. GetType a típusnévvel csak a Type hívó szerelvényében, majd a Rendszerszerelvényben fogja keresni. GetType A szerelvény minősített típusnevével bármelyik szerelvényben megkeresi a Type szerelvényt.

A típusnevek tartalmazhatnak olyan záró karaktereket, amelyek a típussal kapcsolatos további információkat jelölnek, például azt, hogy a típus hivatkozástípus, mutatótípus vagy tömbtípus-e. Ha a típusnevet a záró karakterek nélkül szeretné lekérni, használja t.GetElementType().ToString()a következőt: hol t található a típus.

A szóközök a szerelvény neve kivételével minden típusnév-összetevőben relevánsak. A szerelvény nevében a "," elválasztó előtti szóközök relevánsak, de a "," elválasztó utáni szóközök figyelmen kívül lesznek hagyva.

Az általános típus neve egy háttérrel (') végződik, amelyet az általános típusú argumentumok számát jelző számjegyek követnek. Ennek a névkezelésnek az a célja, hogy lehetővé tegye a fordítók számára, hogy azonos nevű, de különböző számú típusparaméterrel rendelkező általános típusokat támogassanak, amelyek ugyanabban a hatókörben fordulnak elő. A tükröződés például a Tuple`1 és a Tuple`2 nevet adja vissza az általános Tuple(Of T) és Tuple(Of T0, T1) Visual Basic, vagy Tuple<T> és Tuple<T0, T1> a Visual C#-ban.

Általános típusok esetén a típusargumentumok listája szögletes zárójelek közé kerül, a típusargumentumokat pedig vesszők választják el egymástól. Egy általános Dictionary<TKey,TValue> típusparaméter például két típusparaméterrel rendelkezik. A Dictionary<TKey,TValue> típuskulcsok String közül MyType a következők jelölhetők:

System.Collections.Generic.Dictionary`2[System.String,MyType]

Ha egy szerelvény-minősített típust szeretne megadni egy típusargumentumlistában, a szerelvény által minősített típust zárójelek közé kell foglalnia. Ellenkező esetben a szerelvény által minősített név részeit elválasztó vesszőket a rendszer további típusargumentumok elválasztójaként értelmezi. Például egy Dictionary<TKey,TValue>MyType fromMyAssembly.dlltípuskulcsokkal Stringa következőképpen adható meg:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")

Note

A szerelvény-minősített típus csak akkor zárható szögletes zárójelbe, ha egy típusparaméter-listában jelenik meg. A típusparaméter-listákban a szerelvényekben a minősített és a nem minősített típusok keresésére vonatkozó szabályok megegyeznek a minősített és a nem minősített nemgenerikus típusok szabályaival.

A null értékű típusok az általános típusok speciális esetei. A null értékű értékeket Int32 például a "System.Nullable'1[System.Int32]" sztring jelöli.

Note

A null értékű típusokat típusoperátorok használatával is lekérheti. A null értékű Boolean típust például a C# typeof(Nullable<bool>) és GetType(Nullable(Of Boolean)) adja vissza Visual Basic.

Az alábbi táblázat a különböző típusokhoz GetType használt szintaxist mutatja be.

A lekéréshez Használat
Null értékű Int32 Type.GetType("System.Nullable`1[System.Int32]")
Nem felügyelt mutató a MyType Type.GetType("MyType*")
Nem felügyelt mutató egy mutatóra MyType Type.GetType("MyType**")
Felügyelt mutató vagy hivatkozás MyType Type.GetType("MyType&"). Vegye figyelembe, hogy a mutatókkal ellentétben a hivatkozások egy szintre korlátozódnak.
Szülőosztály és beágyazott osztály Type.GetType("MyParentClass+MyNestedClass")
Egydimenziós tömb 0 alsó határával Type.GetType("MyType[]")
Ismeretlen alsó határral rendelkező egydimenziós tömb Type.GetType("MyType[*]")
N dimenziós tömb A zárójeleken belüli vessző (,) összesen n-1 alkalommal. Például System.Object[,,] egy háromdimenziós Object tömböt jelöl.
Egydimenziós tömbök tömbje Type.GetType("MyType[][]")
Négyszögletes kétdimenziós tömb ismeretlen alsó határokkal Type.GetType("MyType[,]")
Egy általános típus egy típusargumentummal Type.GetType("MyGenericType`1[MyType]")
Általános típus két típusargumentummal Type.GetType("MyGenericType`2[MyType,AnotherType]")
Általános típus két szerelvény-minősített típusargumentummal Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Szerelvény-minősített általános típus szerelvény-minősített típusargumentummal Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Olyan általános típus, amelynek típusargumentuma egy általános típus, két típusargumentummal Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Lásd még

A következőre érvényes:

GetType(String, Boolean, Boolean)

Lekéri a Type megadott nevet, megadva, hogy kivételt kell-e tenni, ha a típus nem található, és hogy kis- és nagybetűkre érzékeny keresést hajt-e végre.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError, bool ignoreCase);
public static Type GetType(string typeName, bool throwOnError, bool ignoreCase);
static member GetType : string * bool * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean, ignoreCase As Boolean) As Type

Paraméterek

typeName
String

A lekérendő típus szerelvény-minősített neve. Lásd a(z) AssemblyQualifiedName. Ha a típus a jelenleg futó szerelvényben vagy mscorlib.dll/System.Private.CoreLib.dlltalálható, elegendő megadni a névtér által minősített típusnevet.

throwOnError
Boolean

true kivétel kiírása, ha a típus nem található; false visszatéréshez null. A beállítás false néhány egyéb kivételfeltételt is letilt, de nem mindegyiket. Lásd a Kivételek szakaszt.

ignoreCase
Boolean

truea kis- és nagybetűk megkülönböztetésére szolgáló keresés typeNamefalse végrehajtásához a kis- és nagybetűket megkülönböztető keresés végrehajtásáhoztypeName.

Válaszok

A megadott névvel rendelkező típus. Ha a típus nem található, a throwOnError paraméter megadja, hogy a rendszer visszaadja-e null a hibát, vagy kivételt jelez. Bizonyos esetekben a rendszer kivételt vet ki, függetlenül az értéktől throwOnError. Lásd a Kivételek szakaszt.

Kivételek

typeName az null.

A rendszer meghív egy osztály inicializálót, és kivételt jelez.

throwOnError és true a típus nem található.

-vagy-

throwOnError typeName érvénytelen true karaktereket tartalmaz, például beágyazott lapot.

-vagy-

throwOnError typeName üres true sztring.

-vagy-

throwOnError typeName érvénytelen true méretű tömbtípust jelöl.

-vagy-

typeNameegy tömböt jelöl.TypedReference

throwOnError typeName érvénytelen true szintaxist tartalmaz. Például: "MyType[,*;]".

-vagy-

typeName olyan általános típust jelöl, amely mutatótípussal, ByRef típussal vagy Void annak egyik típusargumentumaként rendelkezik.

-vagy-

typeName olyan általános típust jelöl, amely helytelen számú típusargumentummal rendelkezik.

-vagy-

typeName egy általános típust jelöl, és az egyik típusargumentum nem felel meg a megfelelő típusparaméter korlátainak.

throwOnError van, true és a szerelvény vagy annak egyik függősége nem található.

A szerelvény vagy annak egyik függősége megtalálható, de nem tölthető be.

A szerelvény nem érvényes az aktuálisan betöltött futtatókörnyezetre.

Megjegyzések

A metódussal GetType beszerezhet egy objektumot egy Type másik szerelvény egy típusához, ha ismeri a szerelvény által minősített nevet, amely a következőből AssemblyQualifiedNamekérhető le: . GetType a következőben megadott szerelvény betöltését typeNameokozza: A metódussal Assembly.Load egy szerelvényt is betölthet, majd az objektumokat a vagy Assembly.GetTypes a Assembly.GetType metódus használatával is lekérhetiType. Ha egy típus fordításkor a program által ismert szerelvényben található, akkor hatékonyabb a typeof használata C# nyelven vagy a Visual Basic GetType operátora.

csak .NET keretrendszer: GetType csak lemezről betöltött szerelvényeken működik. Ha a szolgáltatások használatával System.Reflection.Emit definiált dinamikus szerelvényben definiált típus keresésére hív GetType fel, inkonzisztens viselkedést kaphat. A viselkedés attól függ, hogy a dinamikus szerelvény állandó-e, vagyis az RunAndSave enumerálás vagy Save a System.Reflection.Emit.AssemblyBuilderAccess hozzáférési módok használatával jön létre. Ha a dinamikus szerelvény állandó, és a meghívás előtt GetType lemezre lett írva, a betöltő megkeresi a lemezen mentett szerelvényt, betölti a szerelvényt, és lekéri a típust az adott szerelvényből. Ha a rendszer nem menti a szerelvényt a lemezre, amikor GetType meghívják, a metódus ad vissza null. GetType nem érti az átmeneti dinamikus szerelvényeket; ezért egy átmeneti dinamikus szerelvény típusának lekérésére való hívás GetType eredménye null.

A .NET-keretrendszerben a GetType dinamikus modulon való használatához iratkozzon fel a AppDomain.AssemblyResolve eseményre, és mentsen GetType. Ellenkező esetben a szerelvény két példányát fogja megkapni a memóriában.

.NET Core 3.0-s és újabb verzióiban az API által aktivált szerelvényterheléseket a AssemblyLoadContext.CurrentContextualReflectionContext aktuális értéke befolyásolja.

A throwOnError paraméter megadja, hogy mi történik, ha a típus nem található, és letilt bizonyos egyéb kivételfeltételeket is, a Kivételek szakaszban leírtak szerint. Néhány kivételt a rendszer a megadott értéktől throwOnErrorfüggetlenül ad ki. Ha például a típus megtalálható, de nem tölthető be, a rendszer akkor is eldobja a típust, TypeLoadException ha throwOnError igen false.

Az alábbi táblázat azt mutatja be, hogy egy alaposztály mely tagjait adják vissza a metódusok egy Get típuson való tükrözéskor.

Tagtípus Static Nem statikus
Constructor No No
Field No Yes. A mezők mindig név és aláírás alapján rejthetők el.
Esemény Nem alkalmazható A gyakori típusrendszerszabály az, hogy az öröklés megegyezik a tulajdonságot megvalósító metódusok öröklésével. A tükröződés a tulajdonságokat név és aláírás elrejtéseként kezeli. Lásd az alábbi 2. megjegyzést.
Módszer No Yes. A metódusok (mind a virtuális, mind a nem virtuális) elrejthetők név szerint vagy elrejthetők név és aláírás alapján.
Beágyazott típus No No
Property Nem alkalmazható A gyakori típusrendszerszabály az, hogy az öröklés megegyezik a tulajdonságot megvalósító metódusok öröklésével. A tükröződés a tulajdonságokat név és aláírás elrejtéseként kezeli. Lásd az alábbi 2. megjegyzést.
  1. A név és aláírás szerinti elrejtés az aláírás összes részét figyelembe veszi, beleértve az egyéni módosítókat, a visszatérési típusokat, a paramétertípusokat, a sentineleket és a nem kezelt hívási konvenciókat. Ez egy bináris összehasonlítás.

  2. A reflexió során a tulajdonságok és események név és szignatúra szerint vannak elrejtve. Ha az alaposztálynak van egy beolvasási és egy beállítási kiegészítővel rendelkező tulajdonsága, de a származtatott osztálynak csak beolvasási kiegészítője van, a származtatott osztály tulajdonsága elrejti az alaposztály tulajdonságát, és nem tudja majd elérni a beállítót az alaposztályban.

  3. Az egyéni attribútumok nem részei a gyakori típusrendszernek.

A rendszer csak akkor keres tömböket vagy COM-típusokat, ha már betöltötte őket az elérhető osztályok táblájába.

typeName lehet a névtér által minősített típusnév, vagy egy szerelvény által minősített név, amely tartalmazza a szerelvénynév specifikációját. Lásd a(z) AssemblyQualifiedName.

Ha typeName a névteret tartalmazza, de a szerelvény nevét nem, ez a metódus csak a hívó objektum szerelvényében keres, és ebben a sorrendben mscorlib.dll/System.Private.CoreLib.dll. Ha a typeName teljes mértékben a részleges vagy teljes szerelvénynévvel van minősítve, ez a metódus a megadott szerelvényben keres. Ha a szerelvénynek erős neve van, teljes szerelvénynévre van szükség.

A AssemblyQualifiedName tulajdonság egy teljesen minősített típusnevet ad vissza, beleértve a beágyazott típusokat, a szerelvény nevét és a típusargumentumokat. A közös nyelvi futtatókörnyezetet támogató összes fordító kibocsátja a beágyazott osztály egyszerű nevét, a tükröződés pedig a lekérdezéskor a következő konvencióknak megfelelően strukturált nevet hoz létre.

Note

A processzorarchitektúra a szerelvényidentitás része, és szerelvénynév-sztringek részeként adható meg. Például: "ProcessorArchitecture=msil". Kompatibilitási okokból azonban nem szerepel a AssemblyQualifiedName tulajdonság által visszaadott sztringben. A típusokat úgy is betöltheti, hogy létrehoz egy AssemblyName objektumot, és átadja azt a Load metódus megfelelő túlterhelésének. Ezután a metódus használatával betöltheti a Assembly.GetType típusokat a szerelvényből. Lásd még: AssemblyName.ProcessorArchitecture.

Határoló Meaning
Fordított perjel (\) Escape karakter.
Backtick (') Egy vagy több számjegyet előz meg, amely egy általános típus nevének végén található típusparaméterek számát jelöli.
Szögletes zárójelek ([]) Általános típusú argumentumlistát csatol egy létrehozott általános típushoz; egy típusargumentumlistán belül csatoljon egy szerelvény által minősített típust.
Vessző (,) Megelőzi a szerelvény nevét.
Időszak (.) Névtérazonosítókat jelöl.
Pluszjel (+) Beágyazott osztályt előz meg.

Egy osztály teljes neve például így nézhet ki:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Ha a névtér TopNamespace.Sub+Namespace, akkor a sztringnek a pluszjel (+) elé kell lépnie egy escape karakterrel (\), hogy ne lehessen beágyazott elválasztóként értelmezni. A tükröződés a következőképpen bocsátja ki ezt a sztringet:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly

A "++" "\+\+" lesz, a "\" pedig "\\\" lesz.

Ez a minősített név megőrizhető, és később használható a Type. A kereséshez és a betöltéshez Typehasználja GetType csak a típusnevet, vagy a szerelvény minősített típusnevét. GetType a típusnévvel csak a Type hívó szerelvényében, majd a Rendszerszerelvényben fogja keresni. GetType A szerelvény minősített típusnevével bármelyik szerelvényben megkeresi a Type szerelvényt.

A típusnevek tartalmazhatnak olyan záró karaktereket, amelyek a típussal kapcsolatos további információkat jelölnek, például azt, hogy a típus hivatkozástípus, mutatótípus vagy tömbtípus-e. Ha a típusnevet a záró karakterek nélkül szeretné lekérni, használja t.GetElementType().ToString()a következőt: hol t található a típus.

A szóközök a szerelvény neve kivételével minden típusnév-összetevőben relevánsak. A szerelvény nevében a "," elválasztó előtti szóközök relevánsak, de a "," elválasztó utáni szóközök figyelmen kívül lesznek hagyva.

Az általános típus neve egy háttérrel (') végződik, amelyet az általános típusú argumentumok számát jelző számjegyek követnek. Ennek a névkezelésnek az a célja, hogy lehetővé tegye a fordítók számára, hogy azonos nevű, de különböző számú típusparaméterrel rendelkező általános típusokat támogassanak, amelyek ugyanabban a hatókörben fordulnak elő. A tükröződés például a Tuple`1 és a Tuple`2 nevet adja vissza az általános Tuple(Of T) és Tuple(Of T0, T1) Visual Basic, vagy Tuple<T> és Tuple<T0, T1> a Visual C#-ban.

Általános típusok esetén a típusargumentumok listája szögletes zárójelek közé kerül, a típusargumentumokat pedig vesszők választják el egymástól. Egy általános Dictionary<TKey,TValue> típusparaméter például két típusparaméterrel rendelkezik. A Dictionary<TKey,TValue> típuskulcsok String közül MyType a következők jelölhetők:

System.Collections.Generic.Dictionary`2[System.String,MyType]

Ha egy szerelvény-minősített típust szeretne megadni egy típusargumentumlistában, a szerelvény által minősített típust zárójelek közé kell foglalnia. Ellenkező esetben a szerelvény által minősített név részeit elválasztó vesszőket a rendszer további típusargumentumok elválasztójaként értelmezi. Például egy Dictionary<TKey,TValue>MyType MyAssembly.dlltípusú kulcsokat Stringtartalmazó MyAssembly.dllaz alábbiak szerint adható meg:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")

Note

A szerelvény-minősített típus csak akkor zárható szögletes zárójelbe, ha egy típusparaméter-listában jelenik meg. A típusparaméter-listákban a szerelvényekben a minősített és a nem minősített típusok keresésére vonatkozó szabályok megegyeznek a minősített és a nem minősített nemgenerikus típusok szabályaival.

A null értékű típusok az általános típusok speciális esetei. A null értékű értékeket Int32 például a "System.Nullable'1[System.Int32]" sztring jelöli.

Note

A null értékű típusokat típusoperátorok használatával is lekérheti. A null értékű Boolean típust például a C# typeof(Nullable<bool>) és GetType(Nullable(Of Boolean)) adja vissza Visual Basic.

Az alábbi táblázat a különböző típusokhoz GetType használt szintaxist mutatja be.

A lekéréshez Használat
Null értékű Int32 Type.GetType("System.Nullable`1[System.Int32]")
Nem felügyelt mutató a MyType Type.GetType("MyType*")
Nem felügyelt mutató egy mutatóra MyType Type.GetType("MyType**")
Felügyelt mutató vagy hivatkozás MyType Type.GetType("MyType&"). Vegye figyelembe, hogy a mutatókkal ellentétben a hivatkozások egy szintre korlátozódnak.
Szülőosztály és beágyazott osztály Type.GetType("MyParentClass+MyNestedClass")
Egydimenziós tömb 0 alsó határával Type.GetType("MyArray[]")
Ismeretlen alsó határral rendelkező egydimenziós tömb Type.GetType("MyArray[*]")
N dimenziós tömb A zárójeleken belüli vessző (,) összesen n-1 alkalommal. Például System.Object[,,] egy háromdimenziós Object tömböt jelöl.
Kétdimenziós tömb tömbje Type.GetType("MyArray[][]")
Négyszögletes kétdimenziós tömb ismeretlen alsó határokkal Type.GetType("MyArray[,]")
Egy általános típus egy típusargumentummal Type.GetType("MyGenericType`1[MyType]")
Általános típus két típusargumentummal Type.GetType("MyGenericType`2[MyType,AnotherType]")
Általános típus két szerelvény-minősített típusargumentummal Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Szerelvény-minősített általános típus szerelvény-minősített típusargumentummal Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Olyan általános típus, amelynek típusargumentuma egy általános típus, két típusargumentummal Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Lásd még

A következőre érvényes: