Sdílet prostřednictvím


Type.GetType Metoda

Definice

Type Získá objekt, který představuje zadaný typ.

Přetížení

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

Získá typ se zadaným názvem, určuje, zda se má provést vyhledávání citlivé na malá a velká písmena a zda vyvolat výjimku, pokud typ nebyl nalezen, a volitelně poskytnutí vlastních metod pro překlad sestavení a typu.

GetType()

Získá aktuální Type.

GetType(String)

Type Získá se zadaným názvem a provede vyhledávání s rozlišováním velkých a malých písmen.

GetType(String, Boolean)

Type Získá se zadaným názvem, provede vyhledávání s rozlišováním velkých a malých písmen a určí, zda se má vyvolat výjimka, pokud typ nebyl nalezen.

GetType(String, Boolean, Boolean)

Type Získá se zadaným názvem, určuje, zda se má vyvolat výjimka, pokud typ nebyl nalezen a zda provést vyhledávání s rozlišováním malých a malých písmen.

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

Získá typ se zadaným názvem, volitelně poskytnutí vlastních metod pro překlad sestavení a typu.

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

Získá typ se zadaným názvem, určuje, zda má vyvolat výjimku, pokud typ nebyl nalezen, a volitelně poskytnutí vlastních metod pro překlad sestavení a typu.

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

Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs

Získá typ se zadaným názvem, určuje, zda se má provést vyhledávání citlivé na malá a velká písmena a zda vyvolat výjimku, pokud typ nebyl nalezen, a volitelně poskytnutí vlastních metod pro překlad sestavení a typu.

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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The type might be removed")]
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);
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);
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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The type might be removed")>]
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool * bool -> Type
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

Parametry

typeName
String

Název typu, který chcete získat. typeResolver Pokud je parametr zadán, název typu může být jakýkoli řetězec, který typeResolver je schopen přeložit. assemblyResolver Pokud je parametr zadán nebo pokud je použit standardní typ rozlišení, typeName musí být kvalifikovaný název sestavení (vizAssemblyQualifiedName), pokud typ není v aktuálně spuštěné sestavení nebo v mscorlib.dll/System.Private.CoreLib.dll, v takovém případě stačí zadat název typu kvalifikovaný jeho oborem názvů.

assemblyResolver
Func<AssemblyName,Assembly>

Metoda, která vyhledá a vrátí sestavení, které je zadáno v typeName. Název sestavení se předá assemblyResolver jako AssemblyName objekt. Pokud typeName neobsahuje název sestavení, assemblyResolver není volána. Pokud assemblyResolver není zadán, provede se standardní rozlišení sestavení.

Upozornění: Nepředávejte metody od neznámých nebo nedůvěryhodných volajících. To by mohlo vést ke zvýšení oprávnění pro škodlivý kód. Používejte pouze metody, které poskytujete nebo které znáte.

typeResolver
Func<Assembly,String,Boolean,Type>

Metoda, která vyhledá a vrátí typ určený typeName ze sestavení, které je vráceno assemblyResolver standardním překladem sestavení. Pokud není k dispozici žádné sestavení, metoda ji může poskytnout. Metoda také přebírá parametr, který určuje, zda se má provádět vyhledávání bez rozlišování malých a velkých písmen; hodnota ignoreCase je předána do tohoto parametru.

Upozornění: Nepředávejte metody od neznámých nebo nedůvěryhodných volajících.

throwOnError
Boolean

true vyvolání výjimky, pokud typ nebyl nalezen; falsenullvrátit . Zadání false také potlačí některé další podmínky výjimky, ale ne všechny. Viz část Výjimky.

ignoreCase
Boolean

truek provedení vyhledávání typeNamefalse bez rozlišování malých a velkých písmen , k provedení vyhledávání typeNames rozlišováním malých a velkých písmen .

Návraty

Typ se zadaným názvem. Pokud typ nebyl nalezen, parametr určuje, throwOnError zda null je vrácen nebo je vyvolán výjimka. V některých případech je vyvolán výjimka bez ohledu na hodnotu .throwOnError Viz část Výjimky.

Atributy

Výjimky

typeName je null.

Inicializátor třídy je vyvolán a vyvolá výjimku.

throwOnError je true a typ nebyl nalezen.

nebo

throwOnError typeName obsahuje true neplatné znaky, například vloženou kartu.

nebo

throwOnError je true prázdný typeName řetězec.

nebo

throwOnError je true a typeName představuje typ pole s neplatnou velikostí.

nebo

typeNamepředstavuje pole .TypedReference

Při analýze názvu typu a názvu sestavení dojde k typeName chybě (například když jednoduchý název typu obsahuje nepoupravený speciální znak).

nebo

throwOnError je true a typeName obsahuje neplatnou syntaxi (například MyType[,*,]).

nebo

typeName představuje obecný typ, který má typ ukazatele, ByRef typ nebo Void jeden z argumentů typu.

nebo

typeName představuje obecný typ, který má nesprávný počet argumentů typu.

nebo

typeName představuje obecný typ a jeden z argumentů typu nevyhovuje omezením odpovídajícího parametru typu.

throwOnError je true a sestavení nebo jedna z jejích závislostí nebyla nalezena.

Sestavení nebo jedna z jejích závislostí byla nalezena, ale nelze ji načíst.

nebo

typeName obsahuje neplatný název sestavení.

nebo

typeName je platný název sestavení bez názvu typu.

Sestavení nebo jedna z jejích závislostí není platným sestavením pro aktuálně načtený modul runtime.

Poznámky

V .NET Core 3.0 a novějších verzích, pokud assemblyResolver je null, pak načtení sestavení aktivované tímto rozhraním API je ovlivněno aktuální hodnotou AssemblyLoadContext.CurrentContextualReflectionContext.

Další informace o tomto rozhraní API naleznete v tématu Doplňkové poznámky k rozhraní API pro Type.GetType.

Platí pro

GetType()

Zdroj:
Type.cs
Zdroj:
Type.cs
Zdroj:
Type.cs
Zdroj:
Type.cs
Zdroj:
Type.cs

Získá aktuální Type.

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

Návraty

Aktuální Type.

Implementuje

Výjimky

Inicializátor třídy je vyvolán a vyvolá výjimku.

Viz také

Platí pro

GetType(String)

Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs

Type Získá se zadaným názvem a provede vyhledávání s rozlišováním velkých a malých písmen.

public:
 static Type ^ GetType(System::String ^ typeName);
public static Type GetType(string typeName);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The type might be removed")]
public static Type? GetType(string typeName);
public static Type? GetType(string typeName);
static member GetType : string -> Type
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The type might be removed")>]
static member GetType : string -> Type
Public Shared Function GetType (typeName As String) As Type

Parametry

typeName
String

Kvalifikovaný název sestavení typu, který chcete získat. Viz AssemblyQualifiedName. Pokud je typ v aktuálně spuštěné sestavení nebo v mscorlib.dll/System.Private.CoreLib.dll, stačí zadat název typu kvalifikovaný jeho oborem názvů.

Návraty

Typ se zadaným názvem, pokud byl nalezen; v opačném případě . null

Atributy

Výjimky

typeName je null.

Inicializátor třídy je vyvolán a vyvolá výjimku.

typeName představuje obecný typ, který má typ ukazatele, ByRef typ nebo Void jeden z argumentů typu.

nebo

typeName představuje obecný typ, který má nesprávný počet argumentů typu.

nebo

typeName představuje obecný typ a jeden z argumentů typu nevyhovuje omezením odpovídajícího parametru typu.

typeNamepředstavuje neplatný typ, například pole .TypedReference

Sestavení nebo jedna z jejích závislostí byla nalezena, ale nelze ji načíst.

Poznámka: V .NET pro aplikace pro Windows Store nebo v přenosné knihovně tříd zachyťte výjimku základní třídy , místo IOExceptiontoho.

Sestavení není platné pro aktuálně načtený modul runtime.

Příklady

Následující příklad načte typ System.Int32 a používá tento typ objekt k zobrazení FullName vlastnosti 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

Poznámky

Metodu GetType lze použít k získání objektu Type pro typ v jiném sestavení, pokud znáte jeho název kvalifikovaný sestavení, který lze získat z AssemblyQualifiedName. GetType způsobí načtení sestavení zadaného v typeName. Sestavení můžete také načíst pomocí Assembly.Load metody a pak pomocí Assembly.GetType metody Type získat Assembly.GetTypes objekty. Pokud je typ v sestavení známém pro váš program v době kompilace, je efektivnější použít typeof v jazyce C# nebo GetType operátor v jazyce Visual Basic.

Poznámka:

Pokud typeName nelze najít, volání GetType(String) metody vrátí null. Nevyvolá výjimku. Chcete-li určit, zda je vyvolán výjimka, zavolejte přetížení GetType metody, která má throwOnError parametr.

Pouze rozhraní .NET Framework: GetType Funguje pouze na sestaveních načtených z disku. Pokud zavoláte GetType vyhledání typu definovaného v dynamickém sestavení definovaném pomocí System.Reflection.Emit služeb, může dojít k nekonzistentnímu chování. Toto chování závisí na tom, zda je dynamické sestavení trvalé, tj. vytvořené pomocí RunAndSaveSave režimů přístupu výčtu System.Reflection.Emit.AssemblyBuilderAccess . Pokud je dynamické sestavení trvalé a bylo zapsáno na disk před GetType zavolání, zavaděč najde uložené sestavení na disku, načte toto sestavení a načte typ z daného sestavení. Pokud sestavení nebylo uloženo na disk při GetType zavolání, metoda vrátí null. GetType nerozumí přechodným dynamickým sestavením; proto volání GetType načíst typ v přechodné dynamické sestavení vrátí null.

Pokud chcete v rozhraní .NET Framework použít GetType dynamický modul, před uložením se přihlaste k odběru AppDomain.AssemblyResolve události a volání GetType . V opačném případě získáte dvě kopie sestavení v paměti.

V .NET Core 3.0 a novějších verzích jsou načtení sestavení aktivovaná tímto rozhraním API ovlivněna aktuální hodnotou AssemblyLoadContext.CurrentContextualReflectionContext.

Následující tabulka ukazuje, jaké členy základní třídy jsou vráceny metodami Get při reflexi typu.

Typ členu Statický. Nestatické
Konstruktor Ne Ne
Pole Ne Ano. Pole se vždy skryje podle názvu a signatury.
Zvláštní událost Není relevantní Běžné pravidlo systému typů je, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe považuje vlastnosti za skrýt podle názvu a podpisu. Viz poznámka 2 níže.
Metoda Ne Ano. Metodu (virtuální i ne virtuální) lze skrýt podle názvu nebo skrýt podle názvu a podpisu.
Vnořený typ Ne Ne
Vlastnictví Není relevantní Běžné pravidlo systému typů je, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe považuje vlastnosti za skrýt podle názvu a podpisu. Viz poznámka 2 níže.
  1. Funkce skrytí podle jména a podpisu zohledňuje všechny části podpisu, včetně vlastních modifikátorů, návratových typů, typů parametrů, sentinelů a nespravovaných konvencí volání. Jedná se o binární porovnání.

  2. Pro reflexi jsou vlastnosti a události skryty podle názvu a podpisu. Pokud máte vlastnost s oběma přístupovými metodami get i set v základní třídě, ale odvozená třída má pouze přístupovou metodu get, odvozená třída překryje vlastnost základní třídy a nebudete mít přístup k nastavovací metodě základní třídy.

  3. Vlastní atributy nejsou součástí systému běžných typů.

Pole nebo typy modelu COM se nevyhledají, pokud ještě nebyly načteny do tabulky dostupných tříd.

typeName může být název typu kvalifikovaný jeho oborem názvů nebo kvalifikovaným názvem sestavení, který obsahuje specifikaci názvu sestavení. Viz AssemblyQualifiedName.

Pokud typeName obsahuje obor názvů, ale nikoli název sestavení, tato metoda prohledá pouze volání objekt sestavení a mscorlib.dll/System.Private.CoreLib.dll, v tomto pořadí. Pokud je typeName plně kvalifikovaný s částečným nebo úplným názvem sestavení, tato metoda hledá v zadaném sestavení. Pokud má sestavení silný název, je vyžadován úplný název sestavení.

Vlastnost AssemblyQualifiedName vrátí plně kvalifikovaný název typu, včetně vnořených typů, názvu sestavení a argumentů obecného typu. Všechny kompilátory, které podporují modul CLR (Common Language Runtime), budou generovat jednoduchý název vnořené třídy a reflexe při dotazování vytvoří manglovaný název v souladu s následujícími konvencemi.

Poznámka:

Architektura procesoru je součástí identity sestavení a lze ji zadat jako součást řetězců názvů sestavení. Například "ProcessorArchitecture=msil". Z důvodu kompatibility však není součástí řetězce vráceného AssemblyQualifiedName vlastností. Typy můžete také načíst tak, že vytvoříte AssemblyName objekt a předáte ho Load příslušnému přetížení metody. Metodu Assembly.GetType pak můžete použít k načtení typů ze sestavení. Viz také AssemblyName.ProcessorArchitecture.

Oddělovač Význam
Zpětné lomítko (\) Řídicí znak.
Backtick (') Předchází jedné nebo více číslic představujících počet parametrů typu umístěných na konci názvu obecného typu.
Hranaté závorky ([]) Uzavřete seznam argumentů obecného typu pro vytvořený obecný typ; v seznamu argumentů typu uzavřete kvalifikovaný typ sestavení.
Čárka (,) Předchází názvu sestavení.
Období (.) Označuje identifikátory oboru názvů.
Znaménko plus (+) Předchází vnořené třídě.

Plně kvalifikovaný název třídy může vypadat například takto:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Pokud by obor názvů byl TopNamespace.Sub+Namespace, řetězec by musel předcházet znaménko plus (+) řídicím znakem (\), aby se zabránilo jeho interpretaci jako oddělovače vnoření. Reflexe vygeneruje tento řetězec následujícím způsobem:

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

"++" se stane \+\+" a "\" se změní na \\.

Tento kvalifikovaný název lze zachovat a později použít k načtení Type. Chcete-li vyhledat a načíst Type, použijte GetType buď pouze s názvem typu, nebo s názvem kvalifikovaného typu sestavení. GetType s názvem typu bude hledat Type pouze v sestavení volajícího a potom v sestavení Systému. GetType s názvem kvalifikovaného typu sestavení bude hledat v libovolném Type sestavení.

Názvy typů můžou obsahovat koncové znaky, které označují další informace o typu, jako je například typ odkazu, typ ukazatele nebo typ pole. Chcete-li načíst název typu bez těchto koncových znaků, použijte t.GetElementType().ToString(), kde t je typ.

Mezery jsou relevantní pro všechny součásti názvu typu s výjimkou názvu sestavení. V názvu sestavení jsou mezery před oddělovačem "," relevantní, ale mezery za oddělovačem ', jsou ignorovány.

Název obecného typu končí zpětným znakem (') následovaným číslicemi představujícími počet argumentů obecného typu. Účelem tohoto názvu je umožnit kompilátorům podporovat obecné typy se stejným názvem, ale s různými čísly parametrů typu, ke kterým dochází ve stejném oboru. Reflexe například vrátí mangled názvy Tuple`1 a Tuple`2 z obecných metod Tuple(Of T) a Tuple(Of T0, T1) v jazyce Visual Basic nebo Tuple<T> v Tuple<T0, T1> jazyce Visual C#.

U obecných typů je seznam argumentů typu uzavřený v hranatých závorkách a argumenty typu jsou oddělené čárkami. Například obecný Dictionary<TKey,TValue> má dva parametry typu. Hodnota Dictionary<TKey,TValue>MyType A s klíči typu String může být reprezentována takto:

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

Chcete-li zadat typ kvalifikovaný pro sestavení v seznamu argumentů typu, uzavřete kvalifikovaný typ sestavení v hranatých závorkách. V opačném případě jsou čárky, které oddělují části názvu kvalifikovaného sestavení, interpretovány jako oddělovače dalších argumentů typu. Například Dictionary<TKey,TValue> fromMyAssembly.dllMyType , s klíči typu String, může být zadán takto:

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

Poznámka:

Kvalifikovaný typ sestavení lze uzavřít do závorek pouze tehdy, když se zobrazí v seznamu parametrů typu. Pravidla pro vyhledávání sestavení pro kvalifikované a nekvalifikované typy v seznamech parametrů typu jsou stejná jako pravidla pro kvalifikované a nekvalifikované negenerické typy.

Typy s možnou hodnotou null jsou speciální případ obecných typů. Například hodnota nullable Int32 je reprezentována řetězcem "System.Nullable'1[System.Int32]".

Poznámka:

Můžete také získat typy s možnou hodnotou null pomocí operátorů typů. Například typ s možnou Boolean hodnotou null je vrácen v typeof(Nullable<bool>) jazyce C# a v GetType(Nullable(Of Boolean)) jazyce Visual Basic.

Následující tabulka ukazuje syntaxi, se GetType kterou se používá pro různé typy.

Získání Využití
Hodnota nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Nespravovaný ukazatel na MyType Type.GetType("MyType*")
Nespravovaný ukazatel na ukazatel na MyType Type.GetType("MyType**")
Spravovaný ukazatel nebo odkaz na MyType Type.GetType("MyType&"). Všimněte si, že na rozdíl od ukazatelů jsou odkazy omezené na jednu úroveň.
Nadřazená třída a vnořená třída Type.GetType("MyParentClass+MyNestedClass")
Jednorozměrné pole s dolní mezí 0 Type.GetType("MyType[]")
Jednorozměrné pole s neznámou dolní mezí Type.GetType("MyType[*]")
Ndimenzionální pole Čárka (,) uvnitř hranatých závorek je celkem n-1krát. Například System.Object[,,] představuje trojrozměrné Object pole.
Pole jednorozměrných polí Type.GetType("MyType[][]")
Obdélníkové dvojrozměrné pole s neznámými dolními hranicemi Type.GetType("MyType[,]")
Obecný typ s jedním argumentem typu Type.GetType("MyGenericType`1[MyType]")
Obecný typ se dvěma argumenty typu Type.GetType("MyGenericType`2[MyType,AnotherType]")
Obecný typ se dvěma argumenty typu kvalifikovanými sestaveními Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Obecný typ kvalifikovaný sestavením s argumentem typu kvalifikovaným sestavením Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Obecný typ, jehož argument typu je obecný typ se dvěma argumenty typu Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Viz také

Platí pro

GetType(String, Boolean)

Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs

Type Získá se zadaným názvem, provede vyhledávání s rozlišováním velkých a malých písmen a určí, zda se má vyvolat výjimka, pokud typ nebyl nalezen.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError);
public static Type GetType(string typeName, bool throwOnError);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The type might be removed")]
public static Type? GetType(string typeName, bool throwOnError);
public static Type? GetType(string typeName, bool throwOnError);
static member GetType : string * bool -> Type
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The type might be removed")>]
static member GetType : string * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean) As Type

Parametry

typeName
String

Kvalifikovaný název sestavení typu, který chcete získat. Viz AssemblyQualifiedName. Pokud je typ v aktuálně spuštěné sestavení nebo v mscorlib.dll/System.Private.CoreLib.dll, stačí zadat název typu kvalifikovaný jeho oborem názvů.

throwOnError
Boolean

true vyvolání výjimky, pokud typ nebyl nalezen; falsenullvrátit . Zadání false také potlačí některé další podmínky výjimky, ale ne všechny. Viz část Výjimky.

Návraty

Typ se zadaným názvem. Pokud typ nebyl nalezen, parametr určuje, throwOnError zda null je vrácen nebo je vyvolán výjimka. V některých případech je vyvolán výjimka bez ohledu na hodnotu .throwOnError Viz část Výjimky.

Atributy

Výjimky

typeName je null.

Inicializátor třídy je vyvolán a vyvolá výjimku.

throwOnError je true a typ nebyl nalezen.

nebo

throwOnError typeName obsahuje true neplatné znaky, například vloženou kartu.

nebo

throwOnError je true prázdný typeName řetězec.

nebo

throwOnError je true a typeName představuje typ pole s neplatnou velikostí.

nebo

typeNamepředstavuje pole .TypedReference

throwOnError je true a typeName obsahuje neplatnou syntaxi. Například "MyType[;*;]".

nebo

typeName představuje obecný typ, který má typ ukazatele, ByRef typ nebo Void jeden z argumentů typu.

nebo

typeName představuje obecný typ, který má nesprávný počet argumentů typu.

nebo

typeName představuje obecný typ a jeden z argumentů typu nevyhovuje omezením odpovídajícího parametru typu.

throwOnError je true a sestavení nebo jedna z jejích závislostí nebyla nalezena.

Sestavení nebo jedna z jejích závislostí byla nalezena, ale nelze ji načíst.

Poznámka: V .NET pro aplikace pro Windows Store nebo v přenosné knihovně tříd zachyťte výjimku základní třídy , místo IOExceptiontoho.

Sestavení nebo jedna z jejích závislostí nejsou platné pro aktuálně načtený modul runtime.

Příklady

Následující příklad načte typ System.Int32 a používá tento typ objekt k zobrazení FullName vlastnosti System.Int32. Pokud objekt typu odkazuje na sestavení, které neexistuje, tento příklad vyvolá výjimku.

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

Poznámky

Metodu GetType lze použít k získání objektu Type pro typ v jiném sestavení, pokud znáte jeho název kvalifikovaný sestavení, který lze získat z AssemblyQualifiedName. GetType způsobí načtení sestavení zadaného v typeName. Sestavení můžete také načíst pomocí Assembly.Load metody a pak pomocí Assembly.GetType metody Type získat Assembly.GetTypes objekty. Pokud je typ v sestavení známém pro váš program v době kompilace, je efektivnější použít typeof v jazyce C# nebo GetType operátor v jazyce Visual Basic.

Pouze rozhraní .NET Framework: GetType Funguje pouze na sestaveních načtených z disku. Pokud zavoláte GetType vyhledání typu definovaného v dynamickém sestavení definovaném pomocí System.Reflection.Emit služeb, může dojít k nekonzistentnímu chování. Toto chování závisí na tom, zda je dynamické sestavení trvalé, tj. vytvořené pomocí RunAndSaveSave režimů přístupu výčtu System.Reflection.Emit.AssemblyBuilderAccess . Pokud je dynamické sestavení trvalé a bylo zapsáno na disk před GetType zavolání, zavaděč najde uložené sestavení na disku, načte toto sestavení a načte typ z daného sestavení. Pokud sestavení nebylo uloženo na disk při GetType zavolání, metoda vrátí null. GetType nerozumí přechodným dynamickým sestavením; proto volání GetType načíst typ v přechodné dynamické sestavení vrátí null.

Pokud chcete v rozhraní .NET Framework použít GetType dynamický modul, před uložením se přihlaste k odběru AppDomain.AssemblyResolve události a volání GetType . V opačném případě získáte dvě kopie sestavení v paměti.

V .NET Core 3.0 a novějších verzích jsou načtení sestavení aktivovaná tímto rozhraním API ovlivněna aktuální hodnotou AssemblyLoadContext.CurrentContextualReflectionContext.

Parametr throwOnError určuje, co se stane, když se typ nenajde, a také potlačí určité další podmínky výjimky, jak je popsáno v části Výjimky. Některé výjimky jsou vyvolány bez ohledu na hodnotu .throwOnError Například pokud je typ nalezen, ale nelze načíst, TypeLoadException je vyvolán, i když throwOnError je false.

Následující tabulka ukazuje, jaké členy základní třídy jsou vráceny metodami Get při reflexi typu.

Typ členu Statický. Nestatické
Konstruktor Ne Ne
Pole Ne Ano. Pole se vždy skryje podle názvu a signatury.
Zvláštní událost Není relevantní Běžné pravidlo systému typů je, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe považuje vlastnosti za skrýt podle názvu a podpisu. Viz poznámka 2 níže.
Metoda Ne Ano. Metodu (virtuální i ne virtuální) lze skrýt podle názvu nebo skrýt podle názvu a podpisu.
Vnořený typ Ne Ne
Vlastnictví Není relevantní Běžné pravidlo systému typů je, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe považuje vlastnosti za skrýt podle názvu a podpisu. Viz poznámka 2 níže.
  1. Funkce skrytí podle jména a podpisu zohledňuje všechny části podpisu, včetně vlastních modifikátorů, návratových typů, typů parametrů, sentinelů a nespravovaných konvencí volání. Jedná se o binární porovnání.

  2. Pro reflexi jsou vlastnosti a události skryty podle názvu a podpisu. Pokud máte vlastnost s oběma přístupovými metodami get i set v základní třídě, ale odvozená třída má pouze přístupovou metodu get, odvozená třída překryje vlastnost základní třídy a nebudete mít přístup k nastavovací metodě základní třídy.

  3. Vlastní atributy nejsou součástí systému běžných typů.

Pole nebo typy modelu COM se nevyhledají, pokud ještě nebyly načteny do tabulky dostupných tříd.

typeName může být název typu kvalifikovaný jeho oborem názvů nebo kvalifikovaným názvem sestavení, který obsahuje specifikaci názvu sestavení. Viz AssemblyQualifiedName.

Pokud typeName obsahuje obor názvů, ale nikoli název sestavení, tato metoda prohledá pouze volání objekt sestavení a mscorlib.dll/System.Private.CoreLib.dll, v tomto pořadí. Pokud je typeName plně kvalifikovaný s částečným nebo úplným názvem sestavení, tato metoda hledá v zadaném sestavení. Pokud má sestavení silný název, je vyžadován úplný název sestavení.

Vlastnost AssemblyQualifiedName vrátí plně kvalifikovaný název typu, včetně vnořených typů, názvu sestavení a obecných argumentů. Všechny kompilátory, které podporují modul CLR (Common Language Runtime), budou generovat jednoduchý název vnořené třídy a reflexe při dotazování vytvoří manglovaný název v souladu s následujícími konvencemi.

Poznámka:

Architektura procesoru je součástí identity sestavení a lze ji zadat jako součást řetězců názvů sestavení. Například "ProcessorArchitecture=msil". Z důvodu kompatibility však není součástí řetězce vráceného AssemblyQualifiedName vlastností. Typy můžete také načíst tak, že vytvoříte AssemblyName objekt a předáte ho Load příslušnému přetížení metody. Metodu Assembly.GetType pak můžete použít k načtení typů ze sestavení. Viz také AssemblyName.ProcessorArchitecture.

Oddělovač Význam
Zpětné lomítko (\) Řídicí znak.
Backtick (') Předchází jedné nebo více číslic představujících počet parametrů typu umístěných na konci názvu obecného typu.
Hranaté závorky ([]) Uzavřete seznam argumentů obecného typu pro vytvořený obecný typ; v seznamu argumentů typu uzavřete kvalifikovaný typ sestavení.
Čárka (,) Předchází názvu sestavení.
Období (.) Označuje identifikátory oboru názvů.
Znaménko plus (+) Předchází vnořené třídě.

Plně kvalifikovaný název třídy může vypadat například takto:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Pokud by obor názvů byl TopNamespace.Sub+Namespace, řetězec by musel předcházet znaménko plus (+) řídicím znakem (\), aby se zabránilo jeho interpretaci jako oddělovače vnoření. Reflexe vygeneruje tento řetězec následujícím způsobem:

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

"++" se stane \+\+" a "\" se změní na \\.

Tento kvalifikovaný název lze zachovat a později použít k načtení Type. Chcete-li vyhledat a načíst Type, použijte GetType buď pouze s názvem typu, nebo s názvem kvalifikovaného typu sestavení. GetType s názvem typu bude hledat Type pouze v sestavení volajícího a potom v sestavení Systému. GetType s názvem kvalifikovaného typu sestavení bude hledat v libovolném Type sestavení.

Názvy typů můžou obsahovat koncové znaky, které označují další informace o typu, jako je například typ odkazu, typ ukazatele nebo typ pole. Chcete-li načíst název typu bez těchto koncových znaků, použijte t.GetElementType().ToString(), kde t je typ.

Mezery jsou relevantní pro všechny součásti názvu typu s výjimkou názvu sestavení. V názvu sestavení jsou mezery před oddělovačem "," relevantní, ale mezery za oddělovačem ', jsou ignorovány.

Název obecného typu končí zpětným znakem (') následovaným číslicemi představujícími počet argumentů obecného typu. Účelem tohoto názvu je umožnit kompilátorům podporovat obecné typy se stejným názvem, ale s různými čísly parametrů typu, ke kterým dochází ve stejném oboru. Reflexe například vrátí mangled názvy Tuple`1 a Tuple`2 z obecných metod Tuple(Of T) a Tuple(Of T0, T1) v jazyce Visual Basic nebo Tuple<T> v Tuple<T0, T1> jazyce Visual C#.

U obecných typů je seznam argumentů typu uzavřený v hranatých závorkách a argumenty typu jsou oddělené čárkami. Například obecný Dictionary<TKey,TValue> má dva parametry typu. Hodnota Dictionary<TKey,TValue>MyType A s klíči typu String může být reprezentována takto:

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

Chcete-li zadat typ kvalifikovaný pro sestavení v seznamu argumentů typu, uzavřete kvalifikovaný typ sestavení v hranatých závorkách. V opačném případě jsou čárky, které oddělují části názvu kvalifikovaného sestavení, interpretovány jako oddělovače dalších argumentů typu. Například Dictionary<TKey,TValue> z MyType MyAssembly.dll, s klíči typu String, může být zadán takto:

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

Poznámka:

Kvalifikovaný typ sestavení lze uzavřít do závorek pouze tehdy, když se zobrazí v seznamu parametrů typu. Pravidla pro vyhledávání sestavení pro kvalifikované a nekvalifikované typy v seznamech parametrů typu jsou stejná jako pravidla pro kvalifikované a nekvalifikované negenerické typy.

Typy s možnou hodnotou null jsou speciální případ obecných typů. Například hodnota nullable Int32 je reprezentována řetězcem "System.Nullable'1[System.Int32]".

Poznámka:

Můžete také získat typy s možnou hodnotou null pomocí operátorů typů. Například typ s možnou Boolean hodnotou null je vrácen v typeof(Nullable<bool>) jazyce C# a v GetType(Nullable(Of Boolean)) jazyce Visual Basic.

Následující tabulka ukazuje syntaxi, se GetType kterou se používá pro různé typy.

Získání Využití
Hodnota nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Nespravovaný ukazatel na MyType Type.GetType("MyType*")
Nespravovaný ukazatel na ukazatel na MyType Type.GetType("MyType**")
Spravovaný ukazatel nebo odkaz na MyType Type.GetType("MyType&"). Všimněte si, že na rozdíl od ukazatelů jsou odkazy omezené na jednu úroveň.
Nadřazená třída a vnořená třída Type.GetType("MyParentClass+MyNestedClass")
Jednorozměrné pole s dolní mezí 0 Type.GetType("MyArray[]")
Jednorozměrné pole s neznámou dolní mezí Type.GetType("MyArray[*]")
Ndimenzionální pole Čárka (,) uvnitř hranatých závorek je celkem n-1krát. Například System.Object[,,] představuje trojrozměrné Object pole.
Dvojrozměrné pole Type.GetType("MyArray[][]")
Obdélníkové dvojrozměrné pole s neznámými dolními hranicemi Type.GetType("MyArray[,]")
Obecný typ s jedním argumentem typu Type.GetType("MyGenericType`1[MyType]")
Obecný typ se dvěma argumenty typu Type.GetType("MyGenericType`2[MyType,AnotherType]")
Obecný typ se dvěma argumenty typu kvalifikovanými sestaveními Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Obecný typ kvalifikovaný sestavením s argumentem typu kvalifikovaným sestavením Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Obecný typ, jehož argument typu je obecný typ se dvěma argumenty typu Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Viz také

Platí pro

GetType(String, Boolean, Boolean)

Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs

Type Získá se zadaným názvem, určuje, zda se má vyvolat výjimka, pokud typ nebyl nalezen a zda provést vyhledávání s rozlišováním malých a malých písmen.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError, bool ignoreCase);
public static Type GetType(string typeName, bool throwOnError, bool ignoreCase);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The type might be removed")]
public static Type? GetType(string typeName, bool throwOnError, bool ignoreCase);
public static Type? GetType(string typeName, bool throwOnError, bool ignoreCase);
static member GetType : string * bool * bool -> Type
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The type might be removed")>]
static member GetType : string * bool * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean, ignoreCase As Boolean) As Type

Parametry

typeName
String

Kvalifikovaný název sestavení typu, který chcete získat. Viz AssemblyQualifiedName. Pokud je typ v aktuálně spuštěné sestavení nebo v mscorlib.dll/System.Private.CoreLib.dll, stačí zadat název typu kvalifikovaný jeho oborem názvů.

throwOnError
Boolean

true vyvolání výjimky, pokud typ nebyl nalezen; falsenullvrátit . Zadání false také potlačí některé další podmínky výjimky, ale ne všechny. Viz část Výjimky.

ignoreCase
Boolean

truek provedení vyhledávání typeNamefalse bez rozlišování malých a velkých písmen , k provedení vyhledávání typeNames rozlišováním malých a velkých písmen .

Návraty

Typ se zadaným názvem. Pokud typ nebyl nalezen, parametr určuje, throwOnError zda null je vrácen nebo je vyvolán výjimka. V některých případech je vyvolán výjimka bez ohledu na hodnotu .throwOnError Viz část Výjimky.

Atributy

Výjimky

typeName je null.

Inicializátor třídy je vyvolán a vyvolá výjimku.

throwOnError je true a typ nebyl nalezen.

nebo

throwOnError typeName obsahuje true neplatné znaky, například vloženou kartu.

nebo

throwOnError je true prázdný typeName řetězec.

nebo

throwOnError je true a typeName představuje typ pole s neplatnou velikostí.

nebo

typeNamepředstavuje pole .TypedReference

throwOnError je true a typeName obsahuje neplatnou syntaxi. Například "MyType[;*;]".

nebo

typeName představuje obecný typ, který má typ ukazatele, ByRef typ nebo Void jeden z argumentů typu.

nebo

typeName představuje obecný typ, který má nesprávný počet argumentů typu.

nebo

typeName představuje obecný typ a jeden z argumentů typu nevyhovuje omezením odpovídajícího parametru typu.

throwOnError je true a sestavení nebo jedna z jejích závislostí nebyla nalezena.

Sestavení nebo jedna z jejích závislostí byla nalezena, ale nelze ji načíst.

Sestavení není platné pro aktuálně načtený modul runtime.

Poznámky

Metodu GetType lze použít k získání objektu Type pro typ v jiném sestavení, pokud znáte jeho název kvalifikovaný sestavení, který lze získat z AssemblyQualifiedName. GetType způsobí načtení sestavení zadaného v typeName. Sestavení můžete také načíst pomocí Assembly.Load metody a pak pomocí Assembly.GetType metody Type získat Assembly.GetTypes objekty. Pokud je typ v sestavení známém pro váš program v době kompilace, je efektivnější použít typeof v jazyce C# nebo GetType operátor v jazyce Visual Basic.

Pouze rozhraní .NET Framework: GetType Funguje pouze na sestaveních načtených z disku. Pokud zavoláte GetType vyhledání typu definovaného v dynamickém sestavení definovaném pomocí System.Reflection.Emit služeb, může dojít k nekonzistentnímu chování. Toto chování závisí na tom, zda je dynamické sestavení trvalé, tj. vytvořené pomocí RunAndSaveSave režimů přístupu výčtu System.Reflection.Emit.AssemblyBuilderAccess . Pokud je dynamické sestavení trvalé a bylo zapsáno na disk před GetType zavolání, zavaděč najde uložené sestavení na disku, načte toto sestavení a načte typ z daného sestavení. Pokud sestavení nebylo uloženo na disk při GetType zavolání, metoda vrátí null. GetType nerozumí přechodným dynamickým sestavením; proto volání GetType načíst typ v přechodné dynamické sestavení vrátí null.

Pokud chcete v rozhraní .NET Framework použít GetType dynamický modul, před uložením se přihlaste k odběru AppDomain.AssemblyResolve události a volání GetType . V opačném případě získáte dvě kopie sestavení v paměti.

V .NET Core 3.0 a novějších verzích jsou načtení sestavení aktivovaná tímto rozhraním API ovlivněna aktuální hodnotou AssemblyLoadContext.CurrentContextualReflectionContext.

Parametr throwOnError určuje, co se stane, když se typ nenajde, a také potlačí určité další podmínky výjimky, jak je popsáno v části Výjimky. Některé výjimky jsou vyvolány bez ohledu na hodnotu .throwOnError Například pokud je typ nalezen, ale nelze načíst, TypeLoadException je vyvolán, i když throwOnError je false.

Následující tabulka ukazuje, jaké členy základní třídy jsou vráceny metodami Get při reflexi typu.

Typ členu Statický. Nestatické
Konstruktor Ne Ne
Pole Ne Ano. Pole se vždy skryje podle názvu a signatury.
Zvláštní událost Není relevantní Běžné pravidlo systému typů je, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe považuje vlastnosti za skrýt podle názvu a podpisu. Viz poznámka 2 níže.
Metoda Ne Ano. Metodu (virtuální i ne virtuální) lze skrýt podle názvu nebo skrýt podle názvu a podpisu.
Vnořený typ Ne Ne
Vlastnictví Není relevantní Běžné pravidlo systému typů je, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe považuje vlastnosti za skrýt podle názvu a podpisu. Viz poznámka 2 níže.
  1. Funkce skrytí podle jména a podpisu zohledňuje všechny části podpisu, včetně vlastních modifikátorů, návratových typů, typů parametrů, sentinelů a nespravovaných konvencí volání. Jedná se o binární porovnání.

  2. Pro reflexi jsou vlastnosti a události skryty podle názvu a podpisu. Pokud máte vlastnost s oběma přístupovými metodami get i set v základní třídě, ale odvozená třída má pouze přístupovou metodu get, odvozená třída překryje vlastnost základní třídy a nebudete mít přístup k nastavovací metodě základní třídy.

  3. Vlastní atributy nejsou součástí systému běžných typů.

Pole nebo typy modelu COM se nevyhledají, pokud ještě nebyly načteny do tabulky dostupných tříd.

typeName může být název typu kvalifikovaný jeho oborem názvů nebo kvalifikovaným názvem sestavení, který obsahuje specifikaci názvu sestavení. Viz AssemblyQualifiedName.

Pokud typeName obsahuje obor názvů, ale nikoli název sestavení, tato metoda prohledá pouze volání objekt sestavení a mscorlib.dll/System.Private.CoreLib.dll, v tomto pořadí. Pokud je typeName plně kvalifikovaný s částečným nebo úplným názvem sestavení, tato metoda hledá v zadaném sestavení. Pokud má sestavení silný název, je vyžadován úplný název sestavení.

Vlastnost AssemblyQualifiedName vrátí plně kvalifikovaný název typu, včetně vnořených typů, názvu sestavení a argumentů typu. Všechny kompilátory, které podporují modul CLR (Common Language Runtime), budou generovat jednoduchý název vnořené třídy a reflexe při dotazování vytvoří manglovaný název v souladu s následujícími konvencemi.

Poznámka:

Architektura procesoru je součástí identity sestavení a lze ji zadat jako součást řetězců názvů sestavení. Například "ProcessorArchitecture=msil". Z důvodu kompatibility však není součástí řetězce vráceného AssemblyQualifiedName vlastností. Typy můžete také načíst tak, že vytvoříte AssemblyName objekt a předáte ho Load příslušnému přetížení metody. Metodu Assembly.GetType pak můžete použít k načtení typů ze sestavení. Viz také AssemblyName.ProcessorArchitecture.

Oddělovač Význam
Zpětné lomítko (\) Řídicí znak.
Backtick (') Předchází jedné nebo více číslic představujících počet parametrů typu umístěných na konci názvu obecného typu.
Hranaté závorky ([]) Uzavřete seznam argumentů obecného typu pro vytvořený obecný typ; v seznamu argumentů typu uzavřete kvalifikovaný typ sestavení.
Čárka (,) Předchází názvu sestavení.
Období (.) Označuje identifikátory oboru názvů.
Znaménko plus (+) Předchází vnořené třídě.

Plně kvalifikovaný název třídy může vypadat například takto:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Pokud by obor názvů byl TopNamespace.Sub+Namespace, řetězec by musel předcházet znaménko plus (+) řídicím znakem (\), aby se zabránilo jeho interpretaci jako oddělovače vnoření. Reflexe vygeneruje tento řetězec následujícím způsobem:

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

"++" se stane \+\+" a "\" se změní na \\.

Tento kvalifikovaný název lze zachovat a později použít k načtení Type. Chcete-li vyhledat a načíst Type, použijte GetType buď pouze s názvem typu, nebo s názvem kvalifikovaného typu sestavení. GetType s názvem typu bude hledat Type pouze v sestavení volajícího a potom v sestavení Systému. GetType s názvem kvalifikovaného typu sestavení bude hledat v libovolném Type sestavení.

Názvy typů můžou obsahovat koncové znaky, které označují další informace o typu, jako je například typ odkazu, typ ukazatele nebo typ pole. Chcete-li načíst název typu bez těchto koncových znaků, použijte t.GetElementType().ToString(), kde t je typ.

Mezery jsou relevantní pro všechny součásti názvu typu s výjimkou názvu sestavení. V názvu sestavení jsou mezery před oddělovačem "," relevantní, ale mezery za oddělovačem ', jsou ignorovány.

Název obecného typu končí zpětným znakem (') následovaným číslicemi představujícími počet argumentů obecného typu. Účelem tohoto názvu je umožnit kompilátorům podporovat obecné typy se stejným názvem, ale s různými čísly parametrů typu, ke kterým dochází ve stejném oboru. Reflexe například vrátí mangled názvy Tuple`1 a Tuple`2 z obecných metod Tuple(Of T) a Tuple(Of T0, T1) v jazyce Visual Basic nebo Tuple<T> v Tuple<T0, T1> jazyce Visual C#.

U obecných typů je seznam argumentů typu uzavřený v hranatých závorkách a argumenty typu jsou oddělené čárkami. Například obecný Dictionary<TKey,TValue> má dva parametry typu. Hodnota Dictionary<TKey,TValue>MyType A s klíči typu String může být reprezentována takto:

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

Chcete-li zadat typ kvalifikovaný pro sestavení v seznamu argumentů typu, uzavřete kvalifikovaný typ sestavení v hranatých závorkách. V opačném případě jsou čárky, které oddělují části názvu kvalifikovaného sestavení, interpretovány jako oddělovače dalších argumentů typu. Například Dictionary<TKey,TValue> z MyType MyAssembly.dll, s klíči typu String, může být zadán takto:

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

Poznámka:

Kvalifikovaný typ sestavení lze uzavřít do závorek pouze tehdy, když se zobrazí v seznamu parametrů typu. Pravidla pro vyhledávání sestavení pro kvalifikované a nekvalifikované typy v seznamech parametrů typu jsou stejná jako pravidla pro kvalifikované a nekvalifikované negenerické typy.

Typy s možnou hodnotou null jsou speciální případ obecných typů. Například hodnota nullable Int32 je reprezentována řetězcem "System.Nullable'1[System.Int32]".

Poznámka:

Můžete také získat typy s možnou hodnotou null pomocí operátorů typů. Například typ s možnou Boolean hodnotou null je vrácen v typeof(Nullable<bool>) jazyce C# a v GetType(Nullable(Of Boolean)) jazyce Visual Basic.

Následující tabulka ukazuje syntaxi, se GetType kterou se používá pro různé typy.

Získání Využití
Hodnota nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Nespravovaný ukazatel na MyType Type.GetType("MyType*")
Nespravovaný ukazatel na ukazatel na MyType Type.GetType("MyType**")
Spravovaný ukazatel nebo odkaz na MyType Type.GetType("MyType&"). Všimněte si, že na rozdíl od ukazatelů jsou odkazy omezené na jednu úroveň.
Nadřazená třída a vnořená třída Type.GetType("MyParentClass+MyNestedClass")
Jednorozměrné pole s dolní mezí 0 Type.GetType("MyArray[]")
Jednorozměrné pole s neznámou dolní mezí Type.GetType("MyArray[*]")
Ndimenzionální pole Čárka (,) uvnitř hranatých závorek je celkem n-1krát. Například System.Object[,,] představuje trojrozměrné Object pole.
Dvojrozměrné pole Type.GetType("MyArray[][]")
Obdélníkové dvojrozměrné pole s neznámými dolními hranicemi Type.GetType("MyArray[,]")
Obecný typ s jedním argumentem typu Type.GetType("MyGenericType`1[MyType]")
Obecný typ se dvěma argumenty typu Type.GetType("MyGenericType`2[MyType,AnotherType]")
Obecný typ se dvěma argumenty typu kvalifikovanými sestaveními Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Obecný typ kvalifikovaný sestavením s argumentem typu kvalifikovaným sestavením Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Obecný typ, jehož argument typu je obecný typ se dvěma argumenty typu Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Viz také

Platí pro

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

Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs

Získá typ se zadaným názvem, volitelně poskytnutí vlastních metod pro překlad sestavení a typu.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The type might be removed")]
public static Type? GetType(string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly?>? assemblyResolver, Func<System.Reflection.Assembly?,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);
public static Type? GetType(string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly?>? assemblyResolver, Func<System.Reflection.Assembly?,string,bool,Type?>? typeResolver);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The type might be removed")>]
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> -> Type
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

Parametry

typeName
String

Název typu, který chcete získat. typeResolver Pokud je parametr zadán, název typu může být jakýkoli řetězec, který typeResolver je schopen přeložit. assemblyResolver Pokud je parametr zadán nebo pokud je použit standardní typ rozlišení, typeName musí být kvalifikovaný název sestavení (vizAssemblyQualifiedName), pokud typ není v aktuálně spuštěné sestavení nebo v mscorlib.dll/System.Private.CoreLib.dll, v takovém případě stačí zadat název typu kvalifikovaný jeho oborem názvů.

assemblyResolver
Func<AssemblyName,Assembly>

Metoda, která vyhledá a vrátí sestavení, které je zadáno v typeName. Název sestavení se předá assemblyResolver jako AssemblyName objekt. Pokud typeName neobsahuje název sestavení, assemblyResolver není volána. Pokud assemblyResolver není zadán, provede se standardní rozlišení sestavení.

Upozornění: Nepředávejte metody od neznámých nebo nedůvěryhodných volajících. To by mohlo vést ke zvýšení oprávnění pro škodlivý kód. Používejte pouze metody, které poskytujete nebo které znáte.

typeResolver
Func<Assembly,String,Boolean,Type>

Metoda, která vyhledá a vrátí typ určený typeName ze sestavení, které je vráceno assemblyResolver standardním překladem sestavení. Pokud není k dispozici žádné sestavení, typeResolver metoda ji může poskytnout. Metoda také přebírá parametr, který určuje, zda se má provádět vyhledávání bez rozlišování malých a velkých písmen; false tento parametr se předá.

Upozornění: Nepředávejte metody od neznámých nebo nedůvěryhodných volajících.

Návraty

Typ se zadaným názvem nebo null pokud typ nebyl nalezen.

Atributy

Výjimky

typeName je null.

Inicializátor třídy je vyvolán a vyvolá výjimku.

Při analýze názvu typu a názvu sestavení dojde k typeName chybě (například když jednoduchý název typu obsahuje nepoupravený speciální znak).

nebo

typeName představuje obecný typ, který má typ ukazatele, ByRef typ nebo Void jeden z argumentů typu.

nebo

typeName představuje obecný typ, který má nesprávný počet argumentů typu.

nebo

typeName představuje obecný typ a jeden z argumentů typu nevyhovuje omezením odpovídajícího parametru typu.

typeNamepředstavuje neplatný typ, například pole .TypedReference

Sestavení nebo jedna z jejích závislostí byla nalezena, ale nelze ji načíst.

nebo

typeName obsahuje neplatný název sestavení.

nebo

typeName je platný název sestavení bez názvu typu.

Sestavení nebo jedna z jejích závislostí nejsou platné pro aktuálně načtený modul runtime.

Poznámky

Scénáře použití pro tuto metodu a podrobnosti o parametrech assemblyResolvertypeResolver najdete v GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) přetížení metody.

Poznámka:

Pokud typeName nelze najít, volání GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) metody vrátí null. Nevyvolá výjimku. Chcete-li určit, zda je vyvolán výjimka, zavolejte přetížení GetType metody, která má throwOnError parametr.

Volání této přetížení metody je stejné jako volání GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) přetížení metody a určení false pro throwOnError parametry.ignoreCase

Platí pro

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

Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs
Zdroj:
Type.CoreCLR.cs

Získá typ se zadaným názvem, určuje, zda má vyvolat výjimku, pokud typ nebyl nalezen, a volitelně poskytnutí vlastních metod pro překlad sestavení a typu.

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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The type might be removed")]
public static Type? GetType(string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly?>? assemblyResolver, Func<System.Reflection.Assembly?,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);
public static Type? GetType(string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly?>? assemblyResolver, Func<System.Reflection.Assembly?,string,bool,Type?>? typeResolver, bool throwOnError);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The type might be removed")>]
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool -> Type
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

Parametry

typeName
String

Název typu, který chcete získat. typeResolver Pokud je parametr zadán, název typu může být jakýkoli řetězec, který typeResolver je schopen přeložit. assemblyResolver Pokud je parametr zadán nebo pokud je použit standardní typ rozlišení, typeName musí být kvalifikovaný název sestavení (vizAssemblyQualifiedName), pokud typ není v aktuálně spuštěné sestavení nebo v mscorlib.dll/System.Private.CoreLib.dll, v takovém případě stačí zadat název typu kvalifikovaný jeho oborem názvů.

assemblyResolver
Func<AssemblyName,Assembly>

Metoda, která vyhledá a vrátí sestavení, které je zadáno v typeName. Název sestavení se předá assemblyResolver jako AssemblyName objekt. Pokud typeName neobsahuje název sestavení, assemblyResolver není volána. Pokud assemblyResolver není zadán, provede se standardní rozlišení sestavení.

Upozornění: Nepředávejte metody od neznámých nebo nedůvěryhodných volajících. To by mohlo vést ke zvýšení oprávnění pro škodlivý kód. Používejte pouze metody, které poskytujete nebo které znáte.

typeResolver
Func<Assembly,String,Boolean,Type>

Metoda, která vyhledá a vrátí typ určený typeName ze sestavení, které je vráceno assemblyResolver standardním překladem sestavení. Pokud není k dispozici žádné sestavení, metoda ji může poskytnout. Metoda také přebírá parametr, který určuje, zda se má provádět vyhledávání bez rozlišování malých a velkých písmen; false tento parametr se předá.

Upozornění: Nepředávejte metody od neznámých nebo nedůvěryhodných volajících.

throwOnError
Boolean

true vyvolání výjimky, pokud typ nebyl nalezen; falsenullvrátit . Zadání false také potlačí některé další podmínky výjimky, ale ne všechny. Viz část Výjimky.

Návraty

Typ se zadaným názvem. Pokud typ nebyl nalezen, parametr určuje, throwOnError zda null je vrácen nebo je vyvolán výjimka. V některých případech je vyvolán výjimka bez ohledu na hodnotu .throwOnError Viz část Výjimky.

Atributy

Výjimky

typeName je null.

Inicializátor třídy je vyvolán a vyvolá výjimku.

throwOnError je true a typ nebyl nalezen.

nebo

throwOnError typeName obsahuje true neplatné znaky, například vloženou kartu.

nebo

throwOnError je true prázdný typeName řetězec.

nebo

throwOnError je true a typeName představuje typ pole s neplatnou velikostí.

nebo

typeNamepředstavuje pole .TypedReference

Při analýze názvu typu a názvu sestavení dojde k typeName chybě (například když jednoduchý název typu obsahuje nepoupravený speciální znak).

nebo

throwOnError je true a typeName obsahuje neplatnou syntaxi (například MyType[,*,]).

nebo

typeName představuje obecný typ, který má typ ukazatele, ByRef typ nebo Void jeden z argumentů typu.

nebo

typeName představuje obecný typ, který má nesprávný počet argumentů typu.

nebo

typeName představuje obecný typ a jeden z argumentů typu nevyhovuje omezením odpovídajícího parametru typu.

throwOnError je true a sestavení nebo jedna z jejích závislostí nebyla nalezena.

nebo

typeName obsahuje neplatný název sestavení.

nebo

typeName je platný název sestavení bez názvu typu.

Sestavení nebo jedna z jejích závislostí byla nalezena, ale nelze ji načíst.

Sestavení nebo jedna z jejích závislostí nejsou platné pro aktuálně načtený modul runtime.

Poznámky

Scénáře použití pro tuto metodu a podrobnosti o parametrech assemblyResolvertypeResolver najdete v GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) přetížení metody.

Volání této přetížení metody je stejné jako volání GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) přetížení metody a určení false parametru ignoreCase .

Platí pro