Type.GetType Metoda

Definice

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

Přetížení

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

Získá typ se zadaným názvem, určuje, zda provést hledání rozlišující malá a malá písmena a zda vyvolat výjimku, pokud typ není nalezen, a volitelně poskytuje vlastní metody pro překlad sestavení a typ.

GetType()

Získá aktuální Type.

GetType(String)

Získá se Type zadaným názvem a provede hledá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 hledání s rozlišováním malých a malých písmen a určí, zda má být vyvolán výjimka, pokud typ nebyl nalezen.

GetType(String, Boolean, Boolean)

Získá se Type zadaným názvem a určí, zda má být vyvolán výjimka, pokud typ nebyl nalezen a zda se má provést hledá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ě poskytuje vlastní metody pro překlad sestavení a typ.

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 není nalezen, a volitelně poskytuje vlastní metody pro překlad sestavení a typ.

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

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

Získá typ se zadaným názvem, určuje, zda provést hledání rozlišující malá a malá písmena a zda vyvolat výjimku, pokud typ není nalezen, a volitelně poskytuje vlastní metody pro překlad sestavení a typ.

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);
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

Parametry

typeName
String

Název typu, který chcete získat. typeResolver Pokud je parametr zadaný, název typu může být libovolný řetězec, který typeResolver je schopen přeložit. assemblyResolver Pokud je parametr zadán nebo pokud se používá standardní překlad typu, typeName musí být název kvalifikovaný pro sestavení (viz AssemblyQualifiedName), 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í zadané v typeName. Název sestavení se předává assemblyResolver jako AssemblyName objekt. Pokud typeName neobsahuje název sestavení, assemblyResolver není volán. Pokud assemblyResolver není zadán, provede se standardní řešení sestavení.

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

typeResolver
Func<Assembly,String,Boolean,Type>

Metoda, která vyhledá a vrátí typ, který je určen typeName ze sestavení, které je vráceno standardním assemblyResolver řešením sestavení nebo. Pokud není k dispozici žádné sestavení, může metoda poskytnout jedno. Metoda také přebírá parametr, který určuje, zda má provést hledání bez rozlišování malých a malých písmen; hodnota je ignoreCase předána danému parametru.

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

throwOnError
Boolean

true vyvolá výjimku, pokud typ nebyl nalezen; false a vrátí nullse . false Zadáním se také potlačí některé další podmínky výjimky, ale ne všechny. Viz část Výjimky.

ignoreCase
Boolean

truek provedení hledání bez rozlišování velkých a malých písmen pro typeName. falsetypeName

Návraty

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

Výjimky

typeName je null.

Je vyvolán inicializátor třídy, který vyvolá výjimku.

throwOnError is true a typ nebyl nalezen.

-nebo-

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

-nebo-

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

-nebo-

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

-nebo-

typeName představuje pole TypedReference.

K chybě dojde při typeName analýze na název typu a název sestavení (například když jednoduchý název typu obsahuje zvláštní znak bez upozornění).

-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 jako jeden ze svých 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ů jeho typu nesplňuje omezení odpovídajícího parametru typu.

throwOnError is true a sestavení nebo jedna z jeho závislostí nebyla nalezena.

Sestavení nebo některý prvek, na kterém závisí, byly nalezeny, ale nepodařilo se je načíst.

-nebo-

typeName obsahuje neplatný název sestavení.

-nebo-

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

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

Poznámky

Další informace o tomto rozhraní API najdete 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

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í Typehodnota .

Implementuje

Výjimky

Je vyvolán inicializátor třídy, který vyvolá výjimku.

Viz také

Platí pro

GetType(String)

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

Získá se Type zadaným názvem a provede hledá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);
public static Type? GetType (string typeName);
static member GetType : string -> Type
Public Shared Function GetType (typeName As String) As Type

Parametry

typeName
String

Název typu, který chcete získat, je kvalifikovaný pro sestavení. Viz třída AssemblyQualifiedName. Pokud je typ v právě spuštěné sestavení nebo v mscorlib.dll/System.Private.CoreLib.dll, stačí zadat název typu kvalifikovaný podle jeho oboru názvů.

Návraty

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

Výjimky

typeName je null.

Je vyvolán inicializátor třídy, který vyvolá výjimku.

typeName představuje obecný typ, který má typ ukazatele, ByRef typ nebo Void jako jeden ze svých 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ů jeho typu nesplňuje omezení odpovídajícího parametru typu.

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

Sestavení nebo některý prvek, na kterém závisí, byly nalezeny, ale nepodařilo se je načíst.

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

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

Příklady

Následující příklad načte typ objektu System.Int32 a použije tento typ objektu FullName k zobrazení vlastnosti System.Int32.

using namespace System;

int 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
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

Můžete použít metodu GetType k získání objektu Type pro typ v jiném sestavení, pokud znáte jeho název kvalifikovaný pro 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 nebo Assembly.GetTypes získat Type objekty. Pokud je typ v sestavení známém programem v době kompilace, je efektivnější ho použít typeof v jazyce C# nebo operátor v GetType 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.

GetType funguje pouze u sestavení načtených z disku. Pokud zavoláte GetType k vyhledání typu definovaného v dynamickém sestavení definovaném System.Reflection.Emit pomocí služeb, může dojít k nekonzistentnímu chování. Toto chování závisí na tom, zda dynamické sestavení je trvalé, tj. vytvořené pomocí RunAndSave režimů přístupu nebo Save 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 při volání uloženo na disk GetType , vrátí nullmetoda . GetType nerozumí přechodným dynamickým sestavením; Proto volání GetType pro načtení typu v přechodném dynamickém sestavení vrátí null.

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

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

Typ členu Static Nestatický
Konstruktor No No
Pole No Yes. Pole je vždy skrýváno podle názvu a podpisu.
Událost Neuvedeno Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu. Viz poznámka 2 níže.
Metoda No Yes. Metody (virtuální i nevirtuální) mohou být skrývány podle názvu nebo podle názvu a podpisu.
Vnořený typ No No
Vlastnost Neuvedeno Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu. Viz poznámka 2 níže.
  1. Skrývání podle názvu a podpisu bere v úvahu 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 účely reflexe jsou vlastnosti a události skrývány podle názvu a podpisu. Má-li vlastnost v základní třídě přístupové metody get i set, ale odvozená třída má pouze přístupovou metodu get, vlastnost odvozené třídy skryje vlastnost základní třídy a nebudete mít k dispozici přístup k metodě set základní třídy.

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

Pole nebo typy modelu COM se nehledají, pokud již nebyly načteny do tabulky dostupných tříd.

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

Pokud typeName obsahuje obor názvů, ale ne název sestavení, tato metoda prohledá pouze sestavení volajícího objektu 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 vyhledá 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ů typu. Všechny kompilátory, které podporují modul Common Language Runtime, vygenerují jednoduchý název vnořené třídy a reflexe při dotazu sestaví pozměněný název podle následujících pravidel.

Poznámka

Architektura procesoru je součástí identity sestavení a dá se zadat jako součást řetězců názvů sestavení. Příklad: "ProcessorArchitecture = msil". Z důvodu kompatibility však není součástí řetězce vráceného AssemblyQualifiedName vlastností. Můžete také načíst typy tak, že AssemblyName vytvoříte objekt a předáte ho Load příslušnému přetížení metody. Pak můžete použít metodu Assembly.GetType 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 konstruovaný obecný typ; v seznamu argumentů typu uzavřete typ kvalifikovaný pro sestavení.
Čárka (,) Předchází název sestavení.
Tečka (.) Určuje identifikátory oboru názvů.
Znaménko plus (+) Předchází vnořenou třídu.

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řed znakem plus (+) zadat řídicí znak (\), 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

Výraz "++" se změní na \+\+" a "\" na "\\".

Tento kvalifikovaný název lze zachovat a později použít k načtení Type. Pokud chcete vyhledat a načíst Type, použijte GetType buď jenom 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 pak v sestavení Systému. GetType s názvem kvalifikovaného typu sestavení vyhledá v libovolném Type sestavení.

Názvy typů mohou obsahovat koncové znaky poskytující další informace o typu, například zda se jedná o typ ukazatele, odkazu nebo pole. Pokud chcete načíst název typu bez těchto koncových znaků, použijte t.GetElementType().ToString(), kde t je typ.

Mezery jsou brány v úvahu ve všech součástech názvu typu s výjimkou názvu sestavení. V názvu sestavení jsou brány v úvahu mezery před oddělovačem ',', zatímco 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 manglingu názvů je umožnit kompilátorům podporovat obecné typy se stejným názvem, ale s různými počty parametrů typu, které se vyskytují ve stejném oboru. Reflexe například vrátí zkamenělé 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> a Tuple<T0, T1> v jazyce Visual C#.

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

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

Chcete-li v seznamu argumentů typu určit typ kvalifikovaný pro sestavení, uzavřete typ kvalifikovaný pro sestavení do závorek. Jinak jsou čárky, které oddělují části kvalifikovaného názvu sestavení, interpretovány jako oddělovače dalších argumentů typu. Například Dictionary<TKey,TValue>MyType fromMyAssembly.dll s klíči typu Stringmůže být zadán takto:

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

Poznámka

Typ kvalifikovaný pro sestavení může být uzavřen do závorek pouze tehdy, pokud se zobrazí v seznamu parametrů typu. Pravidla pro vyhledávání kvalifikovaných a nekvalifikovaných typů v seznamech parametrů typu jsou stejná jako pravidla pro kvalifikované a nekvalifikované negenerické typy.

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

Poznámka

V jazyce C#, C++ a Visual Basic 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 typeof(Nullable<bool>) v jazyce C#, v Nullable<Boolean>::typeid jazyce C++ a v jazyce GetType(Nullable(Of Boolean)) Visual Basic.

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

Získání Použití
S možnou hodnotou null 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[*]")
N-dimenzionální pole Čárka (,) v závorkách je celkem n-1krát. System.Object[,,] Například představuje trojrozměrnou Object matici.
Pole jednorozměrných polí Type.GetType("MyType[][]")
Obdélníkové dvourozmě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ým pro sestavení Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Obecný typ kvalifikovaný pro sestavení s argumentem typu kvalifikovaným pro sestavení 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

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

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError);
public static Type GetType (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

Parametry

typeName
String

Název typu, který chcete získat, je kvalifikovaný pro sestavení. Viz třída AssemblyQualifiedName. Pokud je typ v právě spuštěné sestavení nebo v mscorlib.dll/System.Private.CoreLib.dll, stačí zadat název typu kvalifikovaný podle jeho oboru názvů.

throwOnError
Boolean

true vyvolá výjimku, pokud typ nebyl nalezen; false a vrátí nullse . false Zadáním se 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 není nalezen, parametr určuje, throwOnError zda null je vrácen nebo je vyvolán výjimka. V některých případech dojde k výjimce bez ohledu na hodnotu parametru throwOnError. Viz část Výjimky.

Výjimky

typeName je null.

Je vyvolán inicializátor třídy, který vyvolá výjimku.

throwOnError is true a typ nebyl nalezen.

-nebo-

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

-nebo-

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

-nebo-

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

-nebo-

typeName př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 jako jeden ze svých 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ů jeho typu nesplňuje omezení odpovídajícího parametru typu.

throwOnError is true a sestavení nebo jedna z jeho závislostí nebyla nalezena.

Sestavení nebo některý prvek, na kterém závisí, byly nalezeny, ale nepodařilo se je načíst.

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

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

Příklady

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

using namespace System;

int 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
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

Můžete použít metodu GetType k získání objektu Type pro typ v jiném sestavení, pokud znáte jeho název kvalifikovaný pro 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 nebo Assembly.GetTypes získat Type objekty. Pokud je typ v sestavení známém programem v době kompilace, je efektivnější ho použít typeof v jazyce C# nebo operátor v GetType jazyce Visual Basic.

GetType funguje pouze u sestavení načtených z disku. Pokud zavoláte GetType k vyhledání typu definovaného v dynamickém sestavení definovaném System.Reflection.Emit pomocí služeb, může dojít k nekonzistentnímu chování. Toto chování závisí na tom, zda dynamické sestavení je trvalé, tj. vytvořené pomocí RunAndSave režimů přístupu nebo Save 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 při volání uloženo na disk GetType , vrátí nullmetoda . GetType nerozumí přechodným dynamickým sestavením; Proto volání GetType pro načtení typu v přechodném dynamickém sestavení vrátí null.

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

Parametr throwOnError určuje, co se stane, když typ není nalezen, a také potlačuje 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 parametru throwOnError. Pokud je například typ nalezen, ale nelze ho načíst, vyvolá se i v případě, TypeLoadException že throwOnError je false.

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

Typ členu Static Nestatický
Konstruktor No No
Pole No Yes. Pole je vždy skrýváno podle názvu a podpisu.
Událost Neuvedeno Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu. Viz poznámka 2 níže.
Metoda No Yes. Metody (virtuální i nevirtuální) mohou být skrývány podle názvu nebo podle názvu a podpisu.
Vnořený typ No No
Vlastnost Neuvedeno Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu. Viz poznámka 2 níže.
  1. Skrývání podle názvu a podpisu bere v úvahu 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 účely reflexe jsou vlastnosti a události skrývány podle názvu a podpisu. Má-li vlastnost v základní třídě přístupové metody get i set, ale odvozená třída má pouze přístupovou metodu get, vlastnost odvozené třídy skryje vlastnost základní třídy a nebudete mít k dispozici přístup k metodě set základní třídy.

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

Pole nebo typy modelu COM se nehledají, pokud již nebyly načteny do tabulky dostupných tříd.

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

Pokud typeName obsahuje obor názvů, ale ne název sestavení, tato metoda prohledá pouze sestavení volajícího objektu 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 vyhledá 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 Common Language Runtime, vygenerují jednoduchý název vnořené třídy a reflexe při dotazu sestaví pozměněný název podle následujících pravidel.

Poznámka

Architektura procesoru je součástí identity sestavení a dá se zadat jako součást řetězců názvů sestavení. Příklad: "ProcessorArchitecture = msil". Z důvodu kompatibility však není součástí řetězce vráceného AssemblyQualifiedName vlastností. Můžete také načíst typy tak, že AssemblyName vytvoříte objekt a předáte ho Load příslušnému přetížení metody. Pak můžete použít metodu Assembly.GetType 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 konstruovaný obecný typ; v seznamu argumentů typu uzavřete typ kvalifikovaný pro sestavení.
Čárka (,) Předchází název sestavení.
Tečka (.) Určuje identifikátory oboru názvů.
Znaménko plus (+) Předchází vnořenou třídu.

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řed znakem plus (+) zadat řídicí znak (\), 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

Výraz "++" se změní na \+\+" a "\" na "\\".

Tento kvalifikovaný název lze zachovat a později použít k načtení Type. Pokud chcete vyhledat a načíst Type, použijte GetType buď jenom 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 pak v sestavení Systému. GetType s názvem kvalifikovaného typu sestavení vyhledá v libovolném Type sestavení.

Názvy typů mohou obsahovat koncové znaky poskytující další informace o typu, například zda se jedná o typ ukazatele, odkazu nebo pole. Pokud chcete načíst název typu bez těchto koncových znaků, použijte t.GetElementType().ToString(), kde t je typ.

Mezery jsou brány v úvahu ve všech součástech názvu typu s výjimkou názvu sestavení. V názvu sestavení jsou brány v úvahu mezery před oddělovačem ',', zatímco 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 manglingu názvů je umožnit kompilátorům podporovat obecné typy se stejným názvem, ale s různými počty parametrů typu, které se vyskytují ve stejném oboru. Reflexe například vrátí zkamenělé 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> a Tuple<T0, T1> v jazyce Visual C#.

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

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

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

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

Poznámka

Typ kvalifikovaný pro sestavení může být uzavřen do závorek pouze tehdy, pokud se zobrazí v seznamu parametrů typu. Pravidla pro vyhledávání kvalifikovaných a nekvalifikovaných typů v seznamech parametrů typu jsou stejná jako pravidla pro kvalifikované a nekvalifikované negenerické typy.

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

Poznámka

V jazyce C#, C++ a Visual Basic 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 typeof(Nullable<bool>) v jazyce C#, v Nullable<Boolean>::typeid jazyce C++ a v jazyce GetType(Nullable(Of Boolean)) Visual Basic.

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

Získání Použití
S možnou hodnotou null 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[*]")
N-dimenzionální pole Čárka (,) v závorkách je celkem n-1krát. System.Object[,,] Například představuje trojrozměrnou Object matici.
Pole dvojrozměrného pole Type.GetType("MyArray[][]")
Obdélníkové dvourozmě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ým pro sestavení Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Obecný typ kvalifikovaný pro sestavení s argumentem typu kvalifikovaným pro sestavení 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

Získá se Type zadaným názvem a určí, zda má být vyvolán výjimka, pokud typ nebyl nalezen a zda se má provést hledá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);
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

Parametry

typeName
String

Název typu, který chcete získat, je kvalifikovaný pro sestavení. Viz třída 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

truevyvolá výjimku, pokud typ nelze najít; false a vrátí .null Zadáním false se také potlačí některé další podmínky výjimky, ale ne všechny. Viz část Výjimky.

ignoreCase
Boolean

truek provedení hledání bez rozlišování malých a velkých písmen pro typeName. falsetypeName

Návraty

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

Výjimky

typeName je null.

Je vyvolán inicializátor třídy, který vyvolá výjimku.

throwOnError is true a typ nebyl nalezen.

-nebo-

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

-nebo-

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

-nebo-

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

-nebo-

typeName př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 jako jeden ze svých 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ů jeho typu nesplňuje omezení pro odpovídající parametr typu.

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

Sestavení nebo některý prvek, na kterém závisí, byly nalezeny, ale nepodařilo se je načíst.

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

Poznámky

Můžete použít metodu GetType k získání objektu Type pro typ v jiném sestavení, pokud znáte jeho název kvalifikovaný pro 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 nebo Assembly.GetTypes získat Type objekty. Pokud je typ v sestavení, které váš program v době kompilace zná, je efektivnější ho použít typeof v jazyce C# nebo GetType operátor v jazyce Visual Basic.

GetType funguje pouze u sestavení načtených z disku. Pokud zavoláte GetType k vyhledání typu definovaného v dynamickém sestavení definovaném System.Reflection.Emit pomocí služeb, může dojít k nekonzistentnímu chování. Chování závisí na tom, zda dynamické sestavení je trvalé, tj. vytvořené pomocí RunAndSave režimů přístupu nebo Save výčtu System.Reflection.Emit.AssemblyBuilderAccess . Pokud je dynamické sestavení trvalé a bylo zapsáno na disk před GetType je volána, zavaděč najde uložené sestavení na disku, načte toto sestavení a načte typ z daného sestavení. Pokud sestavení nebylo při volání uloženo na disk GetType , vrátí nullmetoda . GetType nerozumí přechodným dynamickým sestavením; Proto volání GetType pro načtení typu v přechodném dynamickém sestavení vrátí null.

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

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áné bez ohledu na hodnotu .throwOnError Pokud je například typ nalezen, ale nelze ho načíst, vyvolá se i v případě, TypeLoadException že throwOnError je false.

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

Typ členu Static Nestatický
Konstruktor No No
Pole No Yes. Pole je vždy skrýváno podle názvu a podpisu.
Událost Neuvedeno Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu. Viz poznámka 2 níže.
Metoda No Yes. Metody (virtuální i nevirtuální) mohou být skrývány podle názvu nebo podle názvu a podpisu.
Vnořený typ No No
Vlastnost Neuvedeno Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu. Viz poznámka 2 níže.
  1. Skrývání podle názvu a podpisu bere v úvahu 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 účely reflexe jsou vlastnosti a události skrývány podle názvu a podpisu. Má-li vlastnost v základní třídě přístupové metody get i set, ale odvozená třída má pouze přístupovou metodu get, vlastnost odvozené třídy skryje vlastnost základní třídy a nebudete mít k dispozici přístup k metodě set základní třídy.

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

Pole nebo typy modelu COM nejsou vyhledána, pokud již nebyly načteny do tabulky dostupných tříd.

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

Pokud typeName obsahuje obor názvů, ale ne název sestavení, tato metoda prohledá pouze sestavení volajícího objektu a mscorlib.dll/System.Private.CoreLib.dll v tomto pořadí. Pokud typeName je 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, vyžaduje se ú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 Common Language Runtime, vygenerují jednoduchý název vnořené třídy a reflexe při dotazu sestaví pozměněný název podle následujících pravidel.

Poznámka

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

Oddělovač Význam
Zpětné lomítko (\) Řídicí znak.
Zpětné přichycení (') 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řít seznam argumentů obecného typu pro konstruovaný obecný typ; v seznamu argumentů typu uzavřete typ kvalifikovaný pro sestavení.
Čárka (,) Předchází název sestavení.
Tečka (.) Určuje identifikátory oboru názvů.
Znaménko plus (+) Předchází vnořenou třídu.

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, pak by řetězec musel před znaménkem 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

Z "++" se změní "\+\+" a z "\" se změní na "\\".

Tento kvalifikovaný název lze zachovat a později použít k načtení .Type Pokud chcete 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 poté v sestavení Systému. GetType s názvem kvalifikovaného typu sestavení vyhledá v libovolném Type sestavení.

Názvy typů mohou obsahovat koncové znaky poskytující další informace o typu, například zda se jedná o typ ukazatele, odkazu nebo pole. Pokud chcete načíst název typu bez těchto koncových znaků, použijte t.GetElementType().ToString(), kde t je typ.

Mezery jsou brány v úvahu ve všech součástech názvu typu s výjimkou názvu sestavení. V názvu sestavení jsou brány v úvahu mezery před oddělovačem ',', zatímco 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 manglingu názvů je umožnit kompilátorům podporovat obecné typy se stejným názvem, ale s různými počty parametrů typu, které se vyskytují ve stejném oboru. Reflexe například vrátí zkamenělé 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> a Tuple<T0, T1> v jazyce Visual C#.

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

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

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

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

Poznámka

Typ kvalifikovaný pro sestavení může být uzavřen do závorek pouze tehdy, pokud se zobrazí v seznamu parametrů typu. Pravidla pro vyhledávání kvalifikovaných a nekvalifikovaných typů v seznamech parametrů typu jsou stejná jako pravidla pro kvalifikované a nekvalifikované negenerické typy.

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

Poznámka

V jazyce C#, C++ a Visual Basic 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 typeof(Nullable<bool>) v jazyce C#, v Nullable<Boolean>::typeid jazyce C++ a v jazyce GetType(Nullable(Of Boolean)) Visual Basic.

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

Získání Použití
S možnou hodnotou null 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[*]")
N-dimenzionální pole Čárka (,) v závorkách je celkem n-1krát. System.Object[,,] Například představuje trojrozměrnou Object matici.
Pole dvojrozměrného pole Type.GetType("MyArray[][]")
Obdélníkové dvourozmě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ým pro sestavení Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Obecný typ kvalifikovaný pro sestavení s argumentem typu kvalifikovaným pro sestavení 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

Získá typ se zadaným názvem, volitelně poskytuje vlastní metody pro překlad sestavení a typ.

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);
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

Parametry

typeName
String

Název typu, který chcete získat. typeResolver Pokud je parametr zadaný, název typu může být libovolný řetězec, který typeResolver je schopen přeložit. assemblyResolver Pokud je parametr zadán nebo pokud se používá standardní překlad typu, typeName musí být název kvalifikovaný pro sestavení (viz AssemblyQualifiedName), 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í zadané v typeName. Název sestavení se předává assemblyResolver jako AssemblyName objekt. Pokud typeName neobsahuje název sestavení, assemblyResolver není volán. Pokud assemblyResolver není zadán, provede se standardní řešení sestavení.

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

typeResolver
Func<Assembly,String,Boolean,Type>

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

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

Návraty

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

Výjimky

typeName je null.

Je vyvolán inicializátor třídy, který vyvolá výjimku.

K chybě dojde při typeName analýze na název typu a název sestavení (například když jednoduchý název typu obsahuje zvláštní znak bez upozornění).

-nebo-

typeName představuje obecný typ, který má typ ukazatele, ByRef typ nebo Void jako jeden ze svých 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ů jeho typu nesplňuje omezení odpovídajícího parametru typu.

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

Sestavení nebo některý prvek, na kterém závisí, byly nalezeny, ale nepodařilo se je načíst.

-nebo-

typeName obsahuje neplatný název sestavení.

-nebo-

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

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

Poznámky

Scénáře použití pro tuto metodu a podrobnosti o parametrech assemblyResolver a typeResolver 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í přetížení této 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 parametrů throwOnError a 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

Získá typ se zadaným názvem, určuje, zda se má vyvolat výjimka, pokud typ nebyl nalezen, a volitelně poskytuje vlastní metody pro překlad sestavení a typ.

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);
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

Parametry

typeName
String

Název typu, který chcete získat. typeResolver Pokud je parametr zadaný, název typu může být libovolný řetězec, který typeResolver je schopen překladu. assemblyResolver Pokud je parametr zadán nebo pokud je použit standardní typ rozlišení, typeName musí být název kvalifikovaný pro sestavení (viz AssemblyQualifiedName), 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í zadané v typeName. Název sestavení je předán 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 neznámým nebo nedůvěryhodným volajícím. To by mohlo vést ke zvýšení oprávnění pro škodlivý kód. Používejte pouze metody, které sami poskytnete nebo které znáte.

typeResolver
Func<Assembly,String,Boolean,Type>

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

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

throwOnError
Boolean

truevyvolá výjimku, pokud typ nelze najít; false a vrátí .null Zadáním false se 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 není nalezen, parametr určuje, throwOnError zda null je vrácena nebo je vyvolán výjimka. V některých případech dojde k výjimce bez ohledu na hodnotu .throwOnError Viz část Výjimky.

Výjimky

typeName je null.

Je vyvolán inicializátor třídy, který vyvolá výjimku.

throwOnError is true a typ nebyl nalezen.

-nebo-

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

-nebo-

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

-nebo-

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

-nebo-

typeName představuje pole TypedReference.

K chybě dojde při typeName analýze na název typu a název sestavení (například když jednoduchý název typu obsahuje zvláštní znak bez upozornění).

-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 jako jeden ze svých 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ů jeho typu nesplňuje omezení pro odpovídající parametr typu.

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

-nebo-

typeName obsahuje neplatný název sestavení.

-nebo-

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

Sestavení nebo některý prvek, na kterém závisí, byly nalezeny, ale nepodařilo se je načíst.

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

Poznámky

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

Volání tohoto 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