Type.GetType Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.
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. |
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í.
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.
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é
- String
- TypeLoadException
- AssemblyQualifiedName
- GetAssembly(Type)
- GetType(String)
- AssemblyName
- Zadání plně kvalifikovaných názvů typů
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. |
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í.
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.
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é
- String
- TypeLoadException
- AssemblyQualifiedName
- GetAssembly(Type)
- GetType(String)
- AssemblyName
- Zadání plně kvalifikovaných názvů typů
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. |
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í.
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.
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é
- String
- TypeLoadException
- AssemblyQualifiedName
- GetAssembly(Type)
- GetType(String)
- AssemblyName
- Zadání plně kvalifikovaných názvů typů
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.
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.
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 .