Exportovat (0) Tisk
Rozbalit vše
Tento článek byl přeložen strojově počítačem. Původní text zobrazíte přesunutím ukazatele myši nad jednotlivé věty článku. Další informace
Překlad
Originál

Type.GetType – metoda (String)

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

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

public static Type GetType(
	string typeName
)

Parametry

typeName
Typ: System.String
Sestavení kvalifikovaný název typu získat. Viz téma AssemblyQualifiedName. Pokud je typ aktuálně vykonávajícího sestavení, nebo v knihovně Mscorlib.dll, stačí zadat název typu, který je kvalifikován jeho obor názvů.

Vrácená hodnota

Typ: System.Type
Typ se zadaným názvem Pokud nalézt; jinak null.

VýjimkaPodmínka
ArgumentNullException

typeName je null.

TargetInvocationException

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

ArgumentException

typeName reprezentuje obecný typ, u něhož je jedním z argumentů typu typ ukazatele, typ ByRef nebo typ Void.

-nebo-

typeName reprezentuje obecný typ s nesprávným počtem argumentů typu.

-nebo-

typeName reprezentuje obecný typ, u nějž některý z argumentů typu nevyhovuje omezením pro odpovídající parametr typu.

TypeLoadException

typeName reprezentuje pole prvků TypedReference.

FileLoadException
PoznámkaPoznámka
V prostředí .NET pro aplikace Windows Store nebo knihovny přenosných tříd místo toho použijte zachytávání výjimek základní třídy IOException.

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

BadImageFormatException

Sestavení nebo některý objekt, na kterém závisí, nejsou platné.

-nebo-

Je aktuálně načtený verze 2.0 nebo novější společného jazykového modulu runtime a sestavení byl zkompilován novější verze.

Lze použít GetType metoda získat Type objekt typu v jiném sestavení, pokud znáte jeho obor názvů kvalifikovaný název. GetType způsobí, že načítání sestavení určeného v typeName. Můžete také načíst sestavení pomocí Load metodu a poté GetType nebo GetTypes metody Assembly třídy pro získání Type objekty. Pokud je typ v sestavení v době kompilace známá do programu, je výhodnější použít typeof C# GetType v jazyce Visual Basic nebo typeid v jazyce C++.

GetType funguje pouze v sestavení, které jsou načteny z disku. Pokud zavoláte GetType Chcete-li vyhledat typ definované v dynamickém sestavení definované pomocí System.Reflection.Emit služby, můžete obdržet nekonzistentní chování. Chování závisí na dynamickém sestavení je trvalá, to znamená, je vytvořen pomocí RunAndSave nebo Save režimy přístupu System.Reflection.Emit.AssemblyBuilderAccess výčtu. Pokud dynamický sestavení je trvalá a byla zapsána na disk před GetType je volána, loader vyhledá sestavení uložené na disku načte sestavení a vyhledá typ z tohoto 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 k načtení typu v přechodná vrací dynamická sestavení null.

Chcete-li použít GetType v dynamickém modulu, k odběru AppDomain.AssemblyResolve událostí a volání GetType před uložením. V opačném případě se dostanete dvě kopie sestavení v paměti.

Následující tabulka ukazuje, které členy základní třídy vrací metoda Get při reflexi typu.

Typ členu

Statický

Nestatický

Konstruktor

Ne

Ne

Pole

Ne

Ano. Pole je vždy skrýváno podle názvu a podpisu.

Událost

Nelze použít

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

Ne

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

Vnořený typ

Ne

Ne

Property

Nelze použít

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ů.

Matice či typy modelu COM nebudou vyhledány Pokud již nebyly načteny do tabulky třídy k dispozici.

typeNamemůže být název typu kvalifikován jeho obor názvů nebo sestavení kvalifikovaný název, který obsahuje specifikaci názvu sestavení. Viz téma AssemblyQualifiedName.

Pokud typeName obsahuje obor názvů, nikoli však název sestavení, tato metoda vyhledá pouze volající objekt sestavení a Mscorlib.dll, v uvedeném pořadí. Pokud typeName je plně kvalifikovaný název sestavení částečné nebo úplné, tato metoda hledá v zadaném sestavení. Pokud sestavení nemá silný název, je požadován název sestavení úplný.

AssemblyQualifiedName Vlastnost vrátí úplný název včetně vnořené typy, název sestavení a argumentů obecného 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ámkaPoznámka

Ve verzi 2.0 rozhraní.NET Framework je do identity sestavení přidána architektura procesoru a lze ji uvádět jako součást řetězců názvů sestavení. Příklad: "ProcessorArchitecture = msil". Z důvodů kompatibility však není součástí řetězce vráceného vlastností AssemblyQualifiedName. Můžete také načíst typy vytvořením AssemblyName objekt a předejte jí odpovídající přetížení Load metody. 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 parametrů typu umístěná na konci názvu obecného typu.

Hranaté závorky ([])

Uzavřete seznamu argumentů obecného typu pro obecný typ konstrukce; v seznamu typ argumentu uzavřete typu kvalifikované 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 obor názvů TopNamespace.Sub+Namespace, potom řetězec má předcházet znaménko plus (+) s řídicí znaky (\) zabránit interpretuje jako oddělovač vnoření. Reflexe vyzařuje tento řetězec takto:

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

"++" je převedeno na "\+\+" a "\" na "\\".

Tento kvalifikovaný název lze nastavit jako trvalý a později jej použít k načtení prvku Type. Chcete-li vyhledat a načíst hodnotu Type, použijte metodu GetType buď pouze s názvem typu nebo s názvem typu kvalifikovaného sestavení. Metoda GetType se samotným názvem typu bude prvek Type hledat v sestavení volajícího a poté v systémovém sestavení. Metoda GetType s kvalifikovaným názvem typu sestavení bude hledat prvek Type v libovolném 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. Chcete-li název typu načíst bez těchto koncových znaků, použijte zápis 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čí backtick ('), následuje číslice představující počet argumentů obecného typu. Úprava názvu účelem je umožnit kompilátory podporovat obecné typy se stejným názvem, ale s různými počty parametry typu, které se vyskytují ve stejném oboru. Například odraz vrátí pozměnění názvů Tuple`1 a Tuple`2 z obecné metody Tuple(Of T) a Tuple(Of T0, T1) v jazyce Visual Basic nebo Tuple<T> a n-tice<T0, T1> v jazyce Visual C#.

Pro obecné typy seznamu argument typ je uzavřený v hranatých závorkách a typové argumenty jsou odděleny čárkami. Například obecnou Dictionary<TKey, TValue> obsahuje dva typové parametry. 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]

K určení typu kvalifikované sestavení seznamu argument typu, uzavřete do hranatých závorek typ kvalifikované sestavení. Čárky, které oddělit název sestavení kvalifikované jinak jsou interpretovány jako omezující dalších argumentů. Například Dictionary<TKey, TValue> z MyType zMyAssembly.dll klíče typu String, může být zadána takto:

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

Typ kvalifikované sestavení lze uzavřený v hranatých závorkách, pouze v případě, že se zobrazí v seznamu parametrů typu. Pravidla pro sestavení kvalifikovaných a nekvalifikovaných typů vyhledávání v seznamech parametr typu jsou stejná jako pravidla pro kvalifikované a nekvalifikované neobecný typy.

Typy s možnou hodnotou Null jsou zvláštním případem obecných typů. Například nepovinných Int32 je reprezentován řetězcem "System.Nullable'1[System.Int32"].

PoznámkaPoznámka

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

Následující tabulka uvádí syntaxi, použití s GetType pro různé typy.

Chcete-li získat

Pomocí

S možnou hodnotou NullInt32

Type.GetType("System.Nullable`1[System.Int32]")

Nespravovaná ukazatelMyType

Type.GetType("MyType*")

Nespravované ukazatel na ukazatelMyType

Type.GetType("MyType**")

Spravované ukazatel nebo odkaz naMyType

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

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ámou dolní mez

Type.GetType("MyType[*]")

N rozměrová array

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

Matici jednorozměrné pole.

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

Obdélníkový dvojrozměrné pole s neznámou dolní meze

Type.GetType("MyType[,]")

Obecný typ s jedním typem argumentu

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é sestavení

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

Kvalifikované sestavení obecný typ s argumentem typu kvalifikované sestavení

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

Obecný typ, jehož argument typ je obecný typ se dvěma argumenty typu

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

Následující příklad načte typu System.Int32 a používá tento typ objektu zobrazení FullName vlastnost System.Int32.


using System;
namespace MyTypeNameSpace
{
    class MyClass
    {
        public static void Main(string[] arg)
        {
            try
            {
                // Get the type of a specified class.
                Type myType1 = Type.GetType("System.Int32");
                Console.WriteLine("The full name is {0}.", myType1.FullName);
                // 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(e.Message);
            }
            catch(Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}


.NET Framework

Podporováno v: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Podporováno v: 4, 3.5 SP1

Knihovny přenosných tříd

Podporováno v: Knihovny přenosných tříd

.NET pro aplikace pro Windows Store

Podporováno v: Windows 8

.NET pro aplikace pro Windows Phone

Podporováno v: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (role Server Core není podporována), Windows Server 2008 R2 (role Server Core je podporována s aktualizací SP1 nebo novější, architektura Itanium není podporována)

.NET Framework nepodporuje některé verze platforem. Seznam podporovaných verzí naleznete v tématu .NET – požadavky na systém.

Obsah vytvořený komunitou

Přidat
Zobrazit:
© 2014 Microsoft