Type.GetType Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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.
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.
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.
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. |
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.
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.
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
- String
- TypeLoadException
- AssemblyQualifiedName
- GetAssembly(Type)
- GetType(String)
- AssemblyName
- Teljes típusnevek megadása
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. |
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.
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.
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
- String
- TypeLoadException
- AssemblyQualifiedName
- GetAssembly(Type)
- GetType(String)
- AssemblyName
- Teljes típusnevek megadása
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. |
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.
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.
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
- String
- TypeLoadException
- AssemblyQualifiedName
- GetAssembly(Type)
- GetType(String)
- AssemblyName
- Teljes típusnevek megadása