Tento článek byl přeložený strojově. Pokud chcete zobrazit článek v angličtině, zaškrtněte políčko Angličtina. Anglickou verzi článku můžete také zobrazit v místním okně přesunutím ukazatele myši nad text.
Překlad
Angličtina

Metoda Type.GetType (String)

.NET Framework (current version)
 

Získá Type se zadaným názvem vyhledávání malá a velká písmena.

Obor názvů:   System
Sestavení:  mscorlib (v mscorlib.dll)

public static Type GetType(
	string typeName
)

Parametry

typeName
Type: System.String

Sestavení kvalifikovaný název typu získat. Viz AssemblyQualifiedName. Pokud je typ v aktuálně spuštěné sestavení nebo v Mscorlib.dll, stačí zadat název typu, který je kvalifikován jeho oborem názvů.

Návratová hodnota

Type: System.Type

Typ se zadaným názvem, pokud je nalezena; jinak null.

Exception Condition
ArgumentNullException

typeName je null.

TargetInvocationException

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

ArgumentException

typeName reprezentuje obecný typ, který má typ ukazatele ByRef typu, nebo Void jako jeden z argumentů typu.

- nebo -

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

- nebo -

typeName reprezentuje obecný typ, a jeden z argumentů typu nevyhovuje omezením pro odpovídající typ parametru.

TypeLoadException

typeName představuje pole TypedReference.

FileLoadException
System_CAPS_notePoznámka

V .NET for Windows Store apps nebo přenosné knihovny tříd, zachytit výjimku základní třídy IOException, místo.

Sestavení nebo některý z jeho závislostí nebyla nalezena, ale nelze načíst.

BadImageFormatException

Sestavení nebo některý z jeho závislostí není platný.

- nebo -

Aktuálně je zaveden verze 2.0 nebo novější common language runtime a sestavení bylo zkompilováno pomocí novější verze.

Můžete použít GetType Metoda získat Type objektu pro typ v jiném sestavení, pokud znáte jeho název kvalifikovaný obor názvů. GetType způsobí, že načítání sestavení zadané v typeName. Můžete také načíst sestavení pomocí Load Metoda a následně použít GetType nebo GetTypes metody Assembly třídy pro získání Type objekty. Pokud je typ v sestavení v době kompilace známá vašemu programu, je efektivnější použít v jazyce C#, GetType v jazyce Visual Basic nebo v jazyce C++.

System_CAPS_notePoznámka

Pokud typeName nelze nalézt, volání GetType(String) Metoda vrátí hodnotu null. Nevyvolá výjimku. K řízení tom, zda je vyvolána výjimka, volání přetížení GetType metodu, která má throwOnError parametr.

GetTypeGetType funguje pouze v sestavení načtená z disku. Pokud zavoláte GetType vyhledat typ definovaný v dynamickém sestavení definovány pomocí System.Reflection.Emit služeb, mohou se nekonzistentní chování. Chování závisí na tom, zda dynamická sestavení trvalé, který je, vytvořené pomocí RunAndSave nebo Save režimy přístupu System.Reflection.Emit.AssemblyBuilderAccess výčtu. Pokud dynamického sestavení je trvalý a byla zapsána na disk před GetType je volána, zavaděč vyhledá uložené sestavení na disku, načte sestavení a načte typ z daného sestavení. Pokud sestavení nebyl uložen na disk, pokud GetType je volána metoda vrátí null. GetType nerozumí přechodný dynamická sestavení; Proto volání GetType načíst typ v přechodná dynamického sestavení vrátí null.

Chcete-li použít GetType na dynamický modul přihlásit k odběru AppDomain.AssemblyResolve událostí a volání GetType před uložením. Jinak dojde k dvě kopie sestavení v paměti.

Následující tabulka ukazuje, co členy základní třídy jsou vráceny pomocí Get Při reflexi typu.

Typ člena

Static

Nestatické

Konstruktor

Ne

Ne

Pole

Ne

(Ano). Pole je vždy skrýt podle název a podpisu.

Události

Není k dispozici

Běžné systémové pravidlo typu je, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe zpracovává vlastnosti jako skrýt podle název a podpisu. Viz poznámka 2 níže.

Metoda

Ne

(Ano). Metody (virtuální a nevirtuální) mohou být skrývány podle názvu nebo skrýt podle název a podpisu.

Vnořený typ

Ne

Ne

Vlastnost

Není k dispozici

Běžné systémové pravidlo typu je, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe zpracovává vlastnosti jako skrýt podle název a podpisu. Viz poznámka 2 níže.

  1. Skrýt podle název a podpisu bere v úvahu všechny části podpisu včetně vlastních modifikátorů návratové typy, typy parametrů, sentinelů a nespravovaných konvencí volání. Toto je binární porovnání.

  2. Pro účely reflexe jsou vlastnosti a události Skrýt podle název a podpisu. Pokud máte vlastnost s get i přistupující objekt set v základní třídě, ale odvozená třída má pouze přístupovou metodu get, vlastnost odvozené třídy skryje vlastnost základní třídy a nebudete mít přístup k metodě set základní třídy.

  3. Vlastní atributy nejsou součástí obecný systém typů.

Pole nebo typy modelu COM nebudou vyhledány Pokud již máte bylo načteno do tabulky dostupných tříd.

typeName může být název typu kvalifikovány podle jeho obor názvů nebo kvalifikovaný název sestavení obsahující specifikaci název sestavení. Viz AssemblyQualifiedName.

Pokud typeName obsahuje obor názvů, ale ne název sestavení, prohledává tato metoda pouze volání objektů sestavení a Mscorlib.dll, v uvedeném pořadí. Pokud je plně kvalifikovaný pomocí názvu sestavení částečné nebo úplné typeName, prohledává tato metoda v zadaném sestavení. Pokud sestavení nemá silný název, je vyžadován název dokončení sestavení.

AssemblyQualifiedName Vlastnost vrací plně kvalifikovaný název typu včetně vnořené typy, název sestavení a argumenty obecného typu. Všechny kompilátory, které podporují modul common language runtime, vygenerují jednoduchý název vnořené třídy a reflexe sestaví pozměněný název při dotazu v souladu s následující konvence.

System_CAPS_notePoznámka

V rozhraní .NET Framework verze 2.0 architektura procesoru je do identity sestavení přidána a lze zadat jako součást řetězců názvů sestavení. Například "ProcessorArchitecture = msil". Však není součástí řetězce vráceného AssemblyQualifiedName vlastnost z důvodu kompatibility. Typy lze načíst také vytvořením AssemblyName objektu a předáním k příslušnému přetížení Load Metoda. Pak můžete použít Assembly.GetType Metoda načíst typy ze sestavení. Viz také AssemblyName.ProcessorArchitecture.

Oddělovač

Význam

Zpětné lomítko (\)

Řídicí znak.

Backtick (')

Předchází jednu nebo více číslic představující počet parametry typu, umístěný na konci názvu obecného typu.

Hranaté závorky ([])

Uzavřete seznam argument obecného typu pro Konstruovaný obecný typ; v rámci seznamu argumentů typu uzavřete typu kvalifikovaného 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 například vypadat například takto:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Pokud obor názvů TopNamespace.Sub+Namespace, potom řetězec má předcházet znaménko plus (+) s řídicí znak (\) Chcete-li zamezit interpretaci jako vnoření oddělovače. Reflexe vydává tento řetězec následujícím způsobem:

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

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

Tento kvalifikovaný název lze jako trvalý a později jej použít k načtení Type. Chcete-li vyhledat a načíst Type, použijte GetType buď s typem názvu pouze nebo s názvem typu kvalifikovaného sestavení. GetType s typem název pouze bude hledat Type v sestavení volajícího a poté v systémovém sestavení. GetType s sestavení bude hledat kvalifikovaný název typu Type v libovolném sestavení.

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

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

Název obecného typu končí backtick ('), za nímž následuje číslic představující počet argumentů obecného typu. Úprava názvu účelem je umožnit kompilátory pro podporu obecných typů se stejným názvem, ale s různými počty parametry typu, k nimž došlo ve stejném oboru. Například reflexe vrací pozměnění názvy Tuple`1 a Tuple`2 z obecné metody Tuple(Of T) a Tuple(Of T0, T1) v jazyce Visual Basic nebo Tuple<T> a řazené kolekce členů<T0, T1> v jazyce Visual C#.

Pro obecné typy v seznamu argumentů typu je uzavřen do závorek a argumenty typu jsou odděleny čárkami. Například obecný Dictionary<TKey, TValue> má dva parametry typu. A Dictionary<TKey, TValue> z MyType s klíči typu String může být zobrazen následujícím způsobem:

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

Chcete-li zadat typ kvalifikovaný sestavení v rámci seznamu argumentů typu, uzavřete sestavení kvalifikovaný typ do hranatých závorek. V opačném čárkami, které oddělují části kvalifikovaný název sestavení jsou interpretovány jako oddělovací dalších argumentů. Například Dictionary<TKey, TValue> z MyType zMyAssembly.dll s klíči typu String, může být zadán následujícím způsobem:

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

Typ kvalifikovaný sestavení mohou být uzavřeny do závorek, pouze v případě, že se zobrazí v seznamu parametrů typu. Pravidla pro hledání sestavení pro typy kvalifikovaný a nekvalifikované v seznamech typu parametru jsou stejná jako pravidla pro kvalifikované a nekvalifikované neobecné typy.

Typy podporující hodnoty Null představují zvláštní případ obecných typů. Například s možnou hodnotou Null Int32 je reprezentované řetězcem "System.Nullable'1[System.Int32]".

System_CAPS_notePoznámka

V jazyce C#, C++ a Visual Basic můžete získat také pomocí operátorů typ typy podporující hodnoty Null. Například Null Boolean je typ vrácený typeof(Nullable<bool>) v jazyce C# pomocí Nullable<Boolean>::typeid v jazyce C++ a nástrojem GetType(Nullable(Of Boolean)) v jazyce Visual Basic.

Následující tabulka ukazuje syntaxi použijte s GetType pro různé typy.

Chcete-li získat

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 MyType

Type.GetType("MyType**")

Spravované ukazatele nebo odkazu na MyType

Type.GetType("MyType&"). Všimněte si, že na rozdíl od ukazatelů, odkazů jsou omezeny na jedné úrovni.

Nadřazené třídy a vnořené třídy

Type.GetType("MyParentClass+MyNestedClass")

Jednorozměrné pole s dolní mez 0

Type.GetType("MyType[]")

Jednorozměrné pole s Neznámý dolní mez

Type.GetType("MyType[*]")

N rozměrné pole

Čárkou (,) a celkový počet n-1 časy v závorkách. Například System.Object[,,] představuje trojrozměrné Object pole.

Pole jednorozměrná pole

Type.GetType("MyType[][]")

Pravoúhlá dvourozměrné pole s Neznámý dolní meze

Type.GetType("MyType[,]")

Obecný typ s argumentem jednoho 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 sestavení kvalifikovaný typ

Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")

Sestavení kvalifikovaný obecný typ s argumentem sestavení kvalifikovaný typ

Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")

Obecného typu, jehož typ argumentu je obecný typ se dvěma argumenty typu

Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

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

Univerzální platforma Windows
K dispozici od 8
.NET Framework
K dispozici od 1.1
Přenosná knihovna tříd
Podporováno v: přenosné platformy .NET
Silverlight
K dispozici od 2.0
Windows Phone Silverlight
K dispozici od 7.0
Windows Phone
K dispozici od 8.1
Zpět na začátek
Zobrazit: