Type.GetType Metod

Definition

Hämtar ett Type objekt som representerar den angivna typen.

Överlagringar

Name Description
GetType()

Hämtar den aktuella Type.

GetType(String)

Type Hämtar med det angivna namnet och utför en skiftlägeskänslig sökning.

GetType(String, Boolean)

Type Hämtar med det angivna namnet, utför en skiftlägeskänslig sökning och anger om ett undantag ska utlösas om typen inte hittas.

GetType(String, Boolean, Boolean)

Type Hämtar med det angivna namnet och anger om ett undantag ska utlösas om typen inte hittas och om en skiftlägeskänslig sökning ska utföras.

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

Hämtar typen med det angivna namnet, om du vill ange anpassade metoder för att matcha sammansättningen och typen.

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

Hämtar typen med det angivna namnet, anger om ett undantag ska utlösas om typen inte hittas och om du vill tillhandahålla anpassade metoder för att lösa sammansättningen och typen.

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

Hämtar typen med det angivna namnet, anger om en skiftlägeskänslig sökning ska utföras och om ett undantag ska utlösas om typen inte hittas och om du vill ange anpassade metoder för att lösa sammansättningen och typen.

GetType()

Källa:
Type.cs
Källa:
Type.cs
Källa:
Type.cs
Källa:
Type.cs
Källa:
Type.cs

Hämtar den aktuella Type.

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

Returer

Den aktuella Type.

Implementeringar

Undantag

En klassinitierare anropas och utlöser ett undantag.

Se även

Gäller för

GetType(String)

Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs

Type Hämtar med det angivna namnet och utför en skiftlägeskänslig sökning.

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

Parametrar

typeName
String

Det sammansättningskvalificerade namnet på den typ som ska hämtas. Se även AssemblyQualifiedName. Om typen finns i den pågående sammansättningen eller i mscorlib.dll/System.Private.CoreLib.dllräcker det att ange typnamnet som kvalificerats av dess namnområde.

Returer

Typen med det angivna namnet, om det hittas; annars . null

Attribut

Undantag

typeName är null.

En klassinitierare anropas och utlöser ett undantag.

typeName representerar en allmän typ som har en pekartyp, en ByRef typ eller Void som ett av dess typargument.

-eller-

typeName representerar en allmän typ som har ett felaktigt antal typargument.

-eller-

typeName representerar en allmän typ och ett av dess typargument uppfyller inte begränsningarna för motsvarande typparameter.

typeName representerar en ogiltig typ, till exempel en matris med TypedReference.

Sammansättningen eller något av dess beroenden hittades, men kunde inte läsas in.

Obs! I .NET för Windows Store-appar eller Portable Class Library fångar du i stället basklassfelet IOException.

Sammansättningen är inte giltig för den inlästa körningen.

Exempel

I följande exempel hämtas typen av System.Int32 och använder det typobjektet för att visa FullName egenskapen 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

Kommentarer

Du kan använda GetType metoden för att hämta ett Type objekt för en typ i en annan sammansättning om du känner till dess sammansättningskvalificerade namn, som kan hämtas från AssemblyQualifiedName. GetType orsakar inläsning av sammansättningen som anges i typeName. Du kan också läsa in en sammansättning med hjälp av Assembly.Load metoden och sedan använda Assembly.GetType metoden eller Assembly.GetTypes för att hämta Type objekt. Om en typ finns i en sammansättning som är känd för ditt program vid kompileringstiden är det mer effektivt att använda typeof i C# eller operatorn GetType i Visual Basic.

Note

Om typeName det inte går att hitta returnerar GetType(String)anropet null till metoden . Det utlöser inget undantag. Om du vill kontrollera om ett undantag utlöses anropar du en överlagring av metoden GetType som har en throwOnError parameter.

endast .NET Framework: GetType fungerar bara på sammansättningar som läses in från disken. Om du anropar GetType för att söka efter en typ som definierats i en dynamisk sammansättning som definierats med hjälp av System.Reflection.Emit tjänsterna kan du få inkonsekvent beteende. Beteendet beror på om den dynamiska sammansättningen är beständig, dvs. skapas med hjälp RunAndSave av uppräkningslägena eller Save åtkomstlägena System.Reflection.Emit.AssemblyBuilderAccess . Om den dynamiska sammansättningen är beständig och har skrivits till disk innan GetType anropas, hittar inläsaren den sparade sammansättningen på disken, läser in sammansättningen och hämtar typen från den sammansättningen. Om sammansättningen inte har sparats på disken när GetType anropas returnerar nullmetoden . GetTypeförstår inte tillfälliga dynamiska sammansättningar. Därför returnerar GetTypeanropande null för att hämta en typ i en tillfällig dynamisk sammansättning .

Om du vill använda GetType på en dynamisk modul i .NET Framework kan du prenumerera på händelsen AppDomain.AssemblyResolve och anropa GetType innan du sparar. Annars får du två kopior av sammansättningen i minnet.

På .NET Core 3.0 och senare versioner påverkas sammansättningsbelastningar som utlöses av det här API:et av det aktuella värdet för AssemblyLoadContext.CurrentContextualReflectionContext.

I följande tabell visas vilka medlemmar i en basklass som returneras av metoderna när de Get reflekterar över en typ.

Medlemstyp Static Icke-statisk
Constructor No No
Fält No Yes. Ett fält är alltid dolt genom namn och signatur (hide-by-name-and-signature).
Händelse Ej tillämpligt Den vanliga typen av systemregel är att arvet är detsamma som för de metoder som implementerar egenskapen. Reflektion behandlar egenskaper som hide-by-name-and-signature. Se anmärkning 2 nedan.
Metod No Yes. En metod (både virtuell och icke-virtuell) kan vara hide-by-name eller hide-by-name-and-signature.
Kapslad typ No No
Fastighet Ej tillämpligt Den vanliga typen av systemregel är att arvet är detsamma som för de metoder som implementerar egenskapen. Reflektion behandlar egenskaper som hide-by-name-and-signature. Se anmärkning 2 nedan.
  1. Dölj efter namn och signatur tar hänsyn till alla delar av signaturen, inklusive anpassade modifierare, returtyper, parametertyper, sentinels och ohanterade anropskonventioner. Det här är en binär jämförelse.

  2. För reflektion är egenskaper och händelser dolda genom namn och signatur. Om du har en egenskap med både en get- och en set-accessor i basklassen, men den härledda klassen bara har en get-accessor, döljer egenskapen i den härledda klassen basklassegenskapen och du kommer inte att kunna komma åt set-accessorn i basklassen.

  3. Anpassade attribut ingår inte i det vanliga typsystemet.

Matriser eller COM-typer söks inte efter om de inte redan har lästs in i tabellen med tillgängliga klasser.

typeName kan vara typnamnet som kvalificerats av dess namnområde eller ett sammansättningskvalificerat namn som innehåller en specifikation för sammansättningsnamn. Se även AssemblyQualifiedName.

Om typeName innehåller namnområdet men inte sammansättningsnamnet söker den här metoden bara efter det anropande objektets sammansättning och mscorlib.dll/System.Private.CoreLib.dll, i den ordningen. Om typeName är fullständigt kvalificerat med det partiella eller fullständiga sammansättningsnamnet söker den här metoden i den angivna sammansättningen. Om sammansättningen har ett starkt namn krävs ett fullständigt sammansättningsnamn.

Egenskapen AssemblyQualifiedName returnerar ett fullständigt kvalificerat typnamn, inklusive kapslade typer, sammansättningsnamnet och argument av allmän typ. Alla kompilatorer som stöder common language runtime genererar det enkla namnet på en kapslad klass, och reflektion konstruerar ett manglat namn när de efterfrågas, i enlighet med följande konventioner.

Note

Processorarkitektur är en del av sammansättningsidentiteten och kan anges som en del av sammansättningsnamnsträngar. Till exempel "ProcessorArchitecture=msil". Den ingår dock inte i strängen som returneras av AssemblyQualifiedName egenskapen av kompatibilitetsskäl. Du kan också läsa in typer genom att skapa ett AssemblyName objekt och skicka det till en lämplig överlagring av Load metoden. Du kan sedan använda Assembly.GetType metoden för att läsa in typer från sammansättningen. Se även AssemblyName.ProcessorArchitecture.

Avgränsare Innebörd
Omvänt snedstreck (\) Escape-tecken.
Backtick (') Föregår en eller flera siffror som representerar antalet typparametrar som finns i slutet av namnet på en allmän typ.
Hakparenteser ([]) Omsluta en argumentlista av allmän typ för en konstruerad generisk typ. i en typargumentlista omger du en sammansättningskvalificerad typ.
Kommatecken (,) Föregår sammansättningsnamnet.
Period (.) Anger namnområdesidentifierare.
Plustecken (+) Föregår en kapslad klass.

Till exempel kan det fullständigt kvalificerade namnet för en klass se ut så här:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Om namnområdet var TopNamespace.Sub+Namespace måste strängen föregå plustecknet (+) med ett escape-tecken (\) för att förhindra att det tolkas som en kapslingsavgränsare. Reflektion genererar den här strängen på följande sätt:

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

En "++" blir "\+\+" och "\" blir "\\".

Det här kvalificerade namnet kan sparas och senare användas för att läsa in Type. Om du vill söka efter och läsa in en Typeanvänder du GetType antingen endast typnamnet eller med namnet på den kvalificerade sammansättningstypen. GetType med typnamnet söker bara efter Type i anroparens sammansättning och sedan i systemsammansättningen. GetType med namnet på den kvalificerade sammansättningstypen letar Type efter i valfri sammansättning.

Typnamn kan innehålla avslutande tecken som anger ytterligare information om typen, till exempel om typen är en referenstyp, en pekartyp eller en matristyp. Om du vill hämta typnamnet utan dessa avslutande tecken använder du t.GetElementType().ToString(), där t är typen.

Blanksteg är relevanta för alla typnamnskomponenter förutom sammansättningsnamnet. I sammansättningsnamnet är blanksteg före avgränsaren relevanta, men blanksteg efter avgränsaren ignoreras.

Namnet på en allmän typ slutar med en backtick (') följt av siffror som representerar antalet argument av allmän typ. Syftet med det här namnet är att tillåta kompilatorer att stödja generiska typer med samma namn men med olika antal typparametrar, som förekommer i samma omfång. Reflektion returnerar till exempel de manglade namnen Tuple`1 och Tuple`2 från de generiska metoderna Tuple(Of T) och Tuple(Of T0, T1) i Visual Basic, eller Tuple<T> och Tuple<T0, T1> i Visual C#.

För generiska typer omges typargumentlistan inom hakparenteser och typargumenten avgränsas med kommatecken. En allmän Dictionary<TKey,TValue> har till exempel två typparametrar. En Dictionary<TKey,TValue> av MyType med nycklar av typen String kan representeras på följande sätt:

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

Om du vill ange en sammansättningskvalificerad typ i en typargumentlista omger du den sammansättningskvalificerade typen inom hakparenteser. Annars tolkas kommatecken som avgränsar delarna av det sammansättningskvalificerade namnet som avgränsa ytterligare typargument. Till exempel kan en Dictionary<TKey,TValue> av MyType fromMyAssembly.dll, med nycklar av typen String, anges på följande sätt:

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

Note

En sammansättningskvalificerad typ kan endast omges av hakparenteser när den visas i en typparameterlista. Reglerna för att söka efter kvalificerade och okvalificerade typer i typparameterlistor är desamma som reglerna för kvalificerade och okvalificerade icke-generiska typer.

Nullbara typer är ett specialfall av generiska typer. Till exempel representeras en nullbar Int32 av strängen "System.Nullable'1[System.Int32]".

Note

Du kan också få null-typer med hjälp av typoperatorer. Till exempel returneras typen nullable Boolean av typeof(Nullable<bool>) i C# och av GetType(Nullable(Of Boolean)) i Visual Basic.

I följande tabell visas den syntax som du använder för GetType olika typer.

Hämta Använd
En nullbar Int32 Type.GetType("System.Nullable`1[System.Int32]")
En ohanterad pekare till MyType Type.GetType("MyType*")
En ohanterad pekare till en pekare till MyType Type.GetType("MyType**")
En hanterad pekare eller referens till MyType Type.GetType("MyType&"). Observera att till skillnad från pekare är referenser begränsade till en nivå.
En överordnad klass och en kapslad klass Type.GetType("MyParentClass+MyNestedClass")
En endimensionell matris med en lägre gräns på 0 Type.GetType("MyType[]")
En endimensionell matris med en okänd nedre gräns Type.GetType("MyType[*]")
En n-dimensionell matris Ett kommatecken (,) inom hakparenteserna totalt n-1 gånger. Representerar till exempel System.Object[,,] en tredimensionell Object matris.
En matris med endimensionella matriser Type.GetType("MyType[][]")
En rektangulär tvådimensionell matris med okända nedre gränser Type.GetType("MyType[,]")
En allmän typ med ett typargument Type.GetType("MyGenericType`1[MyType]")
En allmän typ med två typargument Type.GetType("MyGenericType`2[MyType,AnotherType]")
En allmän typ med två sammansättningskvalificerade typargument Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
En sammansättningskvalificerad allmän typ med ett argument av typen sammansättningskvalificerad typ Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
En allmän typ vars typargument är en allmän typ med två typargument Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Se även

Gäller för

GetType(String, Boolean)

Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs

Type Hämtar med det angivna namnet, utför en skiftlägeskänslig sökning och anger om ett undantag ska utlösas om typen inte hittas.

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

Parametrar

typeName
String

Det sammansättningskvalificerade namnet på den typ som ska hämtas. Se även AssemblyQualifiedName. Om typen finns i den pågående sammansättningen eller i mscorlib.dll/System.Private.CoreLib.dllräcker det att ange typnamnet som kvalificerats av dess namnområde.

throwOnError
Boolean

true för att utlösa ett undantag om typen inte kan hittas. false för att returnera null. Om du false anger utelämnas även vissa andra undantagsvillkor, men inte alla. Se avsnittet Undantag.

Returer

Typen med det angivna namnet. Om typen inte hittas anger parametern throwOnError om null returneras eller om ett undantag genereras. I vissa fall genereras ett undantag oavsett värdet throwOnErrorför . Se avsnittet Undantag.

Attribut

Undantag

typeName är null.

En klassinitierare anropas och utlöser ett undantag.

throwOnError är true och typen hittades inte.

-eller-

throwOnError är true och typeName innehåller ogiltiga tecken, till exempel en inbäddad flik.

-eller-

throwOnError är true och typeName är en tom sträng.

-eller-

throwOnError är true och typeName representerar en matristyp med en ogiltig storlek.

-eller-

typeName representerar en matris med TypedReference.

throwOnError är true och typeName innehåller ogiltig syntax. Till exempel "MyType[,*,]".

-eller-

typeName representerar en allmän typ som har en pekartyp, en ByRef typ eller Void som ett av dess typargument.

-eller-

typeName representerar en allmän typ som har ett felaktigt antal typargument.

-eller-

typeName representerar en allmän typ och ett av dess typargument uppfyller inte begränsningarna för motsvarande typparameter.

throwOnError är true och sammansättningen eller något av dess beroenden hittades inte.

Sammansättningen eller något av dess beroenden hittades, men kunde inte läsas in.

Obs! I .NET för Windows Store-appar eller Portable Class Library fångar du i stället basklassfelet IOException.

Sammansättningen eller något av dess beroenden är inte giltigt för den inlästa körningen.

Exempel

I följande exempel hämtas typen av System.Int32 och använder det typobjektet för att visa FullName egenskapen System.Int32. Om ett typobjekt refererar till en sammansättning som inte finns utlöser det här exemplet ett undantag.

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

Kommentarer

Du kan använda GetType metoden för att hämta ett Type objekt för en typ i en annan sammansättning om du känner till dess sammansättningskvalificerade namn, som kan hämtas från AssemblyQualifiedName. GetType orsakar inläsning av sammansättningen som anges i typeName. Du kan också läsa in en sammansättning med hjälp av Assembly.Load metoden och sedan använda Assembly.GetType metoden eller Assembly.GetTypes för att hämta Type objekt. Om en typ finns i en sammansättning som är känd för ditt program vid kompileringstiden är det mer effektivt att använda typeof i C# eller operatorn GetType i Visual Basic.

endast .NET Framework: GetType fungerar bara på sammansättningar som läses in från disken. Om du anropar GetType för att söka efter en typ som definierats i en dynamisk sammansättning som definierats med hjälp av System.Reflection.Emit tjänsterna kan du få inkonsekvent beteende. Beteendet beror på om den dynamiska sammansättningen är beständig, dvs. skapas med hjälp RunAndSave av uppräkningslägena eller Save åtkomstlägena System.Reflection.Emit.AssemblyBuilderAccess . Om den dynamiska sammansättningen är beständig och har skrivits till disk innan GetType anropas, hittar inläsaren den sparade sammansättningen på disken, läser in sammansättningen och hämtar typen från den sammansättningen. Om sammansättningen inte har sparats på disken när GetType anropas returnerar nullmetoden . GetTypeförstår inte tillfälliga dynamiska sammansättningar. Därför returnerar GetTypeanropande null för att hämta en typ i en tillfällig dynamisk sammansättning .

Om du vill använda GetType på en dynamisk modul i .NET Framework kan du prenumerera på händelsen AppDomain.AssemblyResolve och anropa GetType innan du sparar. Annars får du två kopior av sammansättningen i minnet.

På .NET Core 3.0 och senare versioner påverkas sammansättningsbelastningar som utlöses av det här API:et av det aktuella värdet för AssemblyLoadContext.CurrentContextualReflectionContext.

Parametern throwOnError anger vad som händer när typen inte hittas och undertrycker även vissa andra undantagsvillkor enligt beskrivningen i avsnittet Undantag. Vissa undantag utlöses oavsett värdet throwOnErrorför . Om typen till exempel hittas men inte kan läsas in genereras en TypeLoadException även om throwOnError är false.

I följande tabell visas vilka medlemmar i en basklass som returneras av metoderna när de Get reflekterar över en typ.

Medlemstyp Static Icke-statisk
Constructor No No
Fält No Yes. Ett fält är alltid dolt genom namn och signatur (hide-by-name-and-signature).
Händelse Ej tillämpligt Den vanliga typen av systemregel är att arvet är detsamma som för de metoder som implementerar egenskapen. Reflektion behandlar egenskaper som hide-by-name-and-signature. Se anmärkning 2 nedan.
Metod No Yes. En metod (både virtuell och icke-virtuell) kan vara hide-by-name eller hide-by-name-and-signature.
Kapslad typ No No
Fastighet Ej tillämpligt Den vanliga typen av systemregel är att arvet är detsamma som för de metoder som implementerar egenskapen. Reflektion behandlar egenskaper som hide-by-name-and-signature. Se anmärkning 2 nedan.
  1. Dölj efter namn och signatur tar hänsyn till alla delar av signaturen, inklusive anpassade modifierare, returtyper, parametertyper, sentinels och ohanterade anropskonventioner. Det här är en binär jämförelse.

  2. För reflektion är egenskaper och händelser dolda genom namn och signatur. Om du har en egenskap med både en get- och en set-accessor i basklassen, men den härledda klassen bara har en get-accessor, döljer egenskapen i den härledda klassen basklassegenskapen och du kommer inte att kunna komma åt set-accessorn i basklassen.

  3. Anpassade attribut ingår inte i det vanliga typsystemet.

Matriser eller COM-typer söks inte efter om de inte redan har lästs in i tabellen med tillgängliga klasser.

typeName kan vara typnamnet som kvalificerats av dess namnområde eller ett sammansättningskvalificerat namn som innehåller en specifikation för sammansättningsnamn. Se även AssemblyQualifiedName.

Om typeName innehåller namnområdet men inte sammansättningsnamnet söker den här metoden bara efter det anropande objektets sammansättning och mscorlib.dll/System.Private.CoreLib.dll, i den ordningen. Om typeName är fullständigt kvalificerat med det partiella eller fullständiga sammansättningsnamnet söker den här metoden i den angivna sammansättningen. Om sammansättningen har ett starkt namn krävs ett fullständigt sammansättningsnamn.

Egenskapen AssemblyQualifiedName returnerar ett fullständigt kvalificerat typnamn, inklusive kapslade typer, sammansättningsnamnet och allmänna argument. Alla kompilatorer som stöder common language runtime genererar det enkla namnet på en kapslad klass, och reflektion konstruerar ett manglat namn när de efterfrågas, i enlighet med följande konventioner.

Note

Processorarkitektur är en del av sammansättningsidentiteten och kan anges som en del av sammansättningsnamnsträngar. Till exempel "ProcessorArchitecture=msil". Den ingår dock inte i strängen som returneras av AssemblyQualifiedName egenskapen av kompatibilitetsskäl. Du kan också läsa in typer genom att skapa ett AssemblyName objekt och skicka det till en lämplig överlagring av Load metoden. Du kan sedan använda Assembly.GetType metoden för att läsa in typer från sammansättningen. Se även AssemblyName.ProcessorArchitecture.

Avgränsare Innebörd
Omvänt snedstreck (\) Escape-tecken.
Backtick (') Föregår en eller flera siffror som representerar antalet typparametrar som finns i slutet av namnet på en allmän typ.
Hakparenteser ([]) Omsluta en argumentlista av allmän typ för en konstruerad generisk typ. i en typargumentlista omger du en sammansättningskvalificerad typ.
Kommatecken (,) Föregår sammansättningsnamnet.
Period (.) Anger namnområdesidentifierare.
Plustecken (+) Föregår en kapslad klass.

Till exempel kan det fullständigt kvalificerade namnet för en klass se ut så här:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Om namnområdet var TopNamespace.Sub+Namespace måste strängen föregå plustecknet (+) med ett escape-tecken (\) för att förhindra att det tolkas som en kapslingsavgränsare. Reflektion genererar den här strängen på följande sätt:

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

En "++" blir "\+\+" och "\" blir "\\".

Det här kvalificerade namnet kan sparas och senare användas för att läsa in Type. Om du vill söka efter och läsa in en Typeanvänder du GetType antingen endast typnamnet eller med namnet på den kvalificerade sammansättningstypen. GetType med typnamnet söker bara efter Type i anroparens sammansättning och sedan i systemsammansättningen. GetType med namnet på den kvalificerade sammansättningstypen letar Type efter i valfri sammansättning.

Typnamn kan innehålla avslutande tecken som anger ytterligare information om typen, till exempel om typen är en referenstyp, en pekartyp eller en matristyp. Om du vill hämta typnamnet utan dessa avslutande tecken använder du t.GetElementType().ToString(), där t är typen.

Blanksteg är relevanta för alla typnamnskomponenter förutom sammansättningsnamnet. I sammansättningsnamnet är blanksteg före avgränsaren relevanta, men blanksteg efter avgränsaren ignoreras.

Namnet på en allmän typ slutar med en backtick (') följt av siffror som representerar antalet argument av allmän typ. Syftet med det här namnet är att tillåta kompilatorer att stödja generiska typer med samma namn men med olika antal typparametrar, som förekommer i samma omfång. Reflektion returnerar till exempel de manglade namnen Tuple`1 och Tuple`2 från de generiska metoderna Tuple(Of T) och Tuple(Of T0, T1) i Visual Basic, eller Tuple<T> och Tuple<T0, T1> i Visual C#.

För generiska typer omges typargumentlistan inom hakparenteser och typargumenten avgränsas med kommatecken. En allmän Dictionary<TKey,TValue> har till exempel två typparametrar. En Dictionary<TKey,TValue> av MyType med nycklar av typen String kan representeras på följande sätt:

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

Om du vill ange en sammansättningskvalificerad typ i en typargumentlista omger du den sammansättningskvalificerade typen inom hakparenteser. Annars tolkas kommatecken som avgränsar delarna av det sammansättningskvalificerade namnet som avgränsa ytterligare typargument. Till exempel kan en Dictionary<TKey,TValue> av MyType från MyAssembly.dll, med nycklar av typen String, anges på följande sätt:

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

Note

En sammansättningskvalificerad typ kan endast omges av hakparenteser när den visas i en typparameterlista. Reglerna för att söka efter kvalificerade och okvalificerade typer i typparameterlistor är desamma som reglerna för kvalificerade och okvalificerade icke-generiska typer.

Nullbara typer är ett specialfall av generiska typer. Till exempel representeras en nullbar Int32 av strängen "System.Nullable'1[System.Int32]".

Note

Du kan också få null-typer med hjälp av typoperatorer. Till exempel returneras typen nullable Boolean av typeof(Nullable<bool>) i C# och av GetType(Nullable(Of Boolean)) i Visual Basic.

I följande tabell visas den syntax som du använder för GetType olika typer.

Hämta Använd
En nullbar Int32 Type.GetType("System.Nullable`1[System.Int32]")
En ohanterad pekare till MyType Type.GetType("MyType*")
En ohanterad pekare till en pekare till MyType Type.GetType("MyType**")
En hanterad pekare eller referens till MyType Type.GetType("MyType&"). Observera att till skillnad från pekare är referenser begränsade till en nivå.
En överordnad klass och en kapslad klass Type.GetType("MyParentClass+MyNestedClass")
En endimensionell matris med en lägre gräns på 0 Type.GetType("MyArray[]")
En endimensionell matris med en okänd nedre gräns Type.GetType("MyArray[*]")
En n-dimensionell matris Ett kommatecken (,) inom hakparenteserna totalt n-1 gånger. Representerar till exempel System.Object[,,] en tredimensionell Object matris.
En tvådimensionell matriss matris Type.GetType("MyArray[][]")
En rektangulär tvådimensionell matris med okända nedre gränser Type.GetType("MyArray[,]")
En allmän typ med ett typargument Type.GetType("MyGenericType`1[MyType]")
En allmän typ med två typargument Type.GetType("MyGenericType`2[MyType,AnotherType]")
En allmän typ med två sammansättningskvalificerade typargument Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
En sammansättningskvalificerad allmän typ med ett argument av typen sammansättningskvalificerad typ Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
En allmän typ vars typargument är en allmän typ med två typargument Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Se även

Gäller för

GetType(String, Boolean, Boolean)

Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs

Type Hämtar med det angivna namnet och anger om ett undantag ska utlösas om typen inte hittas och om en skiftlägeskänslig sökning ska utföras.

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

Parametrar

typeName
String

Det sammansättningskvalificerade namnet på den typ som ska hämtas. Se även AssemblyQualifiedName. Om typen finns i den pågående sammansättningen eller i mscorlib.dll/System.Private.CoreLib.dllräcker det att ange typnamnet som kvalificerats av dess namnområde.

throwOnError
Boolean

true för att utlösa ett undantag om typen inte kan hittas. false för att returnera null. Om du false anger utelämnas även vissa andra undantagsvillkor, men inte alla. Se avsnittet Undantag.

ignoreCase
Boolean

trueför att utföra en skiftlägeskänslig sökning efter , för typeNameatt utföra en skiftlägeskänslig sökning efter false. typeName

Returer

Typen med det angivna namnet. Om typen inte hittas anger parametern throwOnError om null returneras eller om ett undantag genereras. I vissa fall genereras ett undantag oavsett värdet throwOnErrorför . Se avsnittet Undantag.

Attribut

Undantag

typeName är null.

En klassinitierare anropas och utlöser ett undantag.

throwOnError är true och typen hittades inte.

-eller-

throwOnError är true och typeName innehåller ogiltiga tecken, till exempel en inbäddad flik.

-eller-

throwOnError är true och typeName är en tom sträng.

-eller-

throwOnError är true och typeName representerar en matristyp med en ogiltig storlek.

-eller-

typeName representerar en matris med TypedReference.

throwOnError är true och typeName innehåller ogiltig syntax. Till exempel "MyType[,*,]".

-eller-

typeName representerar en allmän typ som har en pekartyp, en ByRef typ eller Void som ett av dess typargument.

-eller-

typeName representerar en allmän typ som har ett felaktigt antal typargument.

-eller-

typeName representerar en allmän typ och ett av dess typargument uppfyller inte begränsningarna för motsvarande typparameter.

throwOnError är true och sammansättningen eller något av dess beroenden hittades inte.

Sammansättningen eller något av dess beroenden hittades, men kunde inte läsas in.

Sammansättningen är inte giltig för den inlästa körningen.

Kommentarer

Du kan använda GetType metoden för att hämta ett Type objekt för en typ i en annan sammansättning om du känner till dess sammansättningskvalificerade namn, som kan hämtas från AssemblyQualifiedName. GetType orsakar inläsning av sammansättningen som anges i typeName. Du kan också läsa in en sammansättning med hjälp av Assembly.Load metoden och sedan använda Assembly.GetType metoden eller Assembly.GetTypes för att hämta Type objekt. Om en typ finns i en sammansättning som är känd för ditt program vid kompileringstiden är det mer effektivt att använda typeof i C# eller operatorn GetType i Visual Basic.

endast .NET Framework: GetType fungerar bara på sammansättningar som läses in från disken. Om du anropar GetType för att söka efter en typ som definierats i en dynamisk sammansättning som definierats med hjälp av System.Reflection.Emit tjänsterna kan du få inkonsekvent beteende. Beteendet beror på om den dynamiska sammansättningen är beständig, dvs. skapas med hjälp RunAndSave av uppräkningslägena eller Save åtkomstlägena System.Reflection.Emit.AssemblyBuilderAccess . Om den dynamiska sammansättningen är beständig och har skrivits till disk innan GetType anropas, hittar inläsaren den sparade sammansättningen på disken, läser in sammansättningen och hämtar typen från den sammansättningen. Om sammansättningen inte har sparats på disken när GetType anropas returnerar nullmetoden . GetTypeförstår inte tillfälliga dynamiska sammansättningar. Därför returnerar GetTypeanropande null för att hämta en typ i en tillfällig dynamisk sammansättning .

Om du vill använda GetType på en dynamisk modul i .NET Framework kan du prenumerera på händelsen AppDomain.AssemblyResolve och anropa GetType innan du sparar. Annars får du två kopior av sammansättningen i minnet.

På .NET Core 3.0 och senare versioner påverkas sammansättningsbelastningar som utlöses av det här API:et av det aktuella värdet för AssemblyLoadContext.CurrentContextualReflectionContext.

Parametern throwOnError anger vad som händer när typen inte hittas och undertrycker även vissa andra undantagsvillkor enligt beskrivningen i avsnittet Undantag. Vissa undantag utlöses oavsett värdet throwOnErrorför . Om typen till exempel hittas men inte kan läsas in genereras en TypeLoadException även om throwOnError är false.

I följande tabell visas vilka medlemmar i en basklass som returneras av metoderna när de Get reflekterar över en typ.

Medlemstyp Static Icke-statisk
Constructor No No
Fält No Yes. Ett fält är alltid dolt genom namn och signatur (hide-by-name-and-signature).
Händelse Ej tillämpligt Den vanliga typen av systemregel är att arvet är detsamma som för de metoder som implementerar egenskapen. Reflektion behandlar egenskaper som hide-by-name-and-signature. Se anmärkning 2 nedan.
Metod No Yes. En metod (både virtuell och icke-virtuell) kan vara hide-by-name eller hide-by-name-and-signature.
Kapslad typ No No
Fastighet Ej tillämpligt Den vanliga typen av systemregel är att arvet är detsamma som för de metoder som implementerar egenskapen. Reflektion behandlar egenskaper som hide-by-name-and-signature. Se anmärkning 2 nedan.
  1. Dölj efter namn och signatur tar hänsyn till alla delar av signaturen, inklusive anpassade modifierare, returtyper, parametertyper, sentinels och ohanterade anropskonventioner. Det här är en binär jämförelse.

  2. För reflektion är egenskaper och händelser dolda genom namn och signatur. Om du har en egenskap med både en get- och en set-accessor i basklassen, men den härledda klassen bara har en get-accessor, döljer egenskapen i den härledda klassen basklassegenskapen och du kommer inte att kunna komma åt set-accessorn i basklassen.

  3. Anpassade attribut ingår inte i det vanliga typsystemet.

Matriser eller COM-typer söks inte efter om de inte redan har lästs in i tabellen med tillgängliga klasser.

typeName kan vara typnamnet som kvalificerats av dess namnområde eller ett sammansättningskvalificerat namn som innehåller en specifikation för sammansättningsnamn. Se även AssemblyQualifiedName.

Om typeName innehåller namnområdet men inte sammansättningsnamnet söker den här metoden bara efter det anropande objektets sammansättning och mscorlib.dll/System.Private.CoreLib.dll, i den ordningen. Om typeName är fullständigt kvalificerat med det partiella eller fullständiga sammansättningsnamnet söker den här metoden i den angivna sammansättningen. Om sammansättningen har ett starkt namn krävs ett fullständigt sammansättningsnamn.

Egenskapen AssemblyQualifiedName returnerar ett fullständigt kvalificerat typnamn, inklusive kapslade typer, sammansättningsnamnet och typargument. Alla kompilatorer som stöder common language runtime genererar det enkla namnet på en kapslad klass, och reflektion konstruerar ett manglat namn när de efterfrågas, i enlighet med följande konventioner.

Note

Processorarkitektur är en del av sammansättningsidentiteten och kan anges som en del av sammansättningsnamnsträngar. Till exempel "ProcessorArchitecture=msil". Den ingår dock inte i strängen som returneras av AssemblyQualifiedName egenskapen av kompatibilitetsskäl. Du kan också läsa in typer genom att skapa ett AssemblyName objekt och skicka det till en lämplig överlagring av Load metoden. Du kan sedan använda Assembly.GetType metoden för att läsa in typer från sammansättningen. Se även AssemblyName.ProcessorArchitecture.

Avgränsare Innebörd
Omvänt snedstreck (\) Escape-tecken.
Backtick (') Föregår en eller flera siffror som representerar antalet typparametrar som finns i slutet av namnet på en allmän typ.
Hakparenteser ([]) Omsluta en argumentlista av allmän typ för en konstruerad generisk typ. i en typargumentlista omger du en sammansättningskvalificerad typ.
Kommatecken (,) Föregår sammansättningsnamnet.
Period (.) Anger namnområdesidentifierare.
Plustecken (+) Föregår en kapslad klass.

Till exempel kan det fullständigt kvalificerade namnet för en klass se ut så här:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Om namnområdet var TopNamespace.Sub+Namespace måste strängen föregå plustecknet (+) med ett escape-tecken (\) för att förhindra att det tolkas som en kapslingsavgränsare. Reflektion genererar den här strängen på följande sätt:

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

En "++" blir "\+\+" och "\" blir "\\".

Det här kvalificerade namnet kan sparas och senare användas för att läsa in Type. Om du vill söka efter och läsa in en Typeanvänder du GetType antingen endast typnamnet eller med namnet på den kvalificerade sammansättningstypen. GetType med typnamnet söker bara efter Type i anroparens sammansättning och sedan i systemsammansättningen. GetType med namnet på den kvalificerade sammansättningstypen letar Type efter i valfri sammansättning.

Typnamn kan innehålla avslutande tecken som anger ytterligare information om typen, till exempel om typen är en referenstyp, en pekartyp eller en matristyp. Om du vill hämta typnamnet utan dessa avslutande tecken använder du t.GetElementType().ToString(), där t är typen.

Blanksteg är relevanta för alla typnamnskomponenter förutom sammansättningsnamnet. I sammansättningsnamnet är blanksteg före avgränsaren relevanta, men blanksteg efter avgränsaren ignoreras.

Namnet på en allmän typ slutar med en backtick (') följt av siffror som representerar antalet argument av allmän typ. Syftet med det här namnet är att tillåta kompilatorer att stödja generiska typer med samma namn men med olika antal typparametrar, som förekommer i samma omfång. Reflektion returnerar till exempel de manglade namnen Tuple`1 och Tuple`2 från de generiska metoderna Tuple(Of T) och Tuple(Of T0, T1) i Visual Basic, eller Tuple<T> och Tuple<T0, T1> i Visual C#.

För generiska typer omges typargumentlistan inom hakparenteser och typargumenten avgränsas med kommatecken. En allmän Dictionary<TKey,TValue> har till exempel två typparametrar. En Dictionary<TKey,TValue> av MyType med nycklar av typen String kan representeras på följande sätt:

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

Om du vill ange en sammansättningskvalificerad typ i en typargumentlista omger du den sammansättningskvalificerade typen inom hakparenteser. Annars tolkas kommatecken som avgränsar delarna av det sammansättningskvalificerade namnet som avgränsa ytterligare typargument. Till exempel kan en Dictionary<TKey,TValue> av MyType från MyAssembly.dll, med nycklar av typen String, anges på följande sätt:

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

Note

En sammansättningskvalificerad typ kan endast omges av hakparenteser när den visas i en typparameterlista. Reglerna för att söka efter kvalificerade och okvalificerade typer i typparameterlistor är desamma som reglerna för kvalificerade och okvalificerade icke-generiska typer.

Nullbara typer är ett specialfall av generiska typer. Till exempel representeras en nullbar Int32 av strängen "System.Nullable'1[System.Int32]".

Note

Du kan också få null-typer med hjälp av typoperatorer. Till exempel returneras typen nullable Boolean av typeof(Nullable<bool>) i C# och av GetType(Nullable(Of Boolean)) i Visual Basic.

I följande tabell visas den syntax som du använder för GetType olika typer.

Hämta Använd
En nullbar Int32 Type.GetType("System.Nullable`1[System.Int32]")
En ohanterad pekare till MyType Type.GetType("MyType*")
En ohanterad pekare till en pekare till MyType Type.GetType("MyType**")
En hanterad pekare eller referens till MyType Type.GetType("MyType&"). Observera att till skillnad från pekare är referenser begränsade till en nivå.
En överordnad klass och en kapslad klass Type.GetType("MyParentClass+MyNestedClass")
En endimensionell matris med en lägre gräns på 0 Type.GetType("MyArray[]")
En endimensionell matris med en okänd nedre gräns Type.GetType("MyArray[*]")
En n-dimensionell matris Ett kommatecken (,) inom hakparenteserna totalt n-1 gånger. Representerar till exempel System.Object[,,] en tredimensionell Object matris.
En tvådimensionell matriss matris Type.GetType("MyArray[][]")
En rektangulär tvådimensionell matris med okända nedre gränser Type.GetType("MyArray[,]")
En allmän typ med ett typargument Type.GetType("MyGenericType`1[MyType]")
En allmän typ med två typargument Type.GetType("MyGenericType`2[MyType,AnotherType]")
En allmän typ med två sammansättningskvalificerade typargument Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
En sammansättningskvalificerad allmän typ med ett argument av typen sammansättningskvalificerad typ Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
En allmän typ vars typargument är en allmän typ med två typargument Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Se även

Gäller för

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

Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs

Hämtar typen med det angivna namnet, om du vill ange anpassade metoder för att matcha sammansättningen och typen.

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

Parametrar

typeName
String

Namnet på den typ som ska hämtas. Om parametern typeResolver anges kan typnamnet vara valfri sträng som typeResolver kan matchas. Om parametern assemblyResolver anges eller om standardtypmatchning används typeName måste vara ett sammansättningskvalificerat namn (se AssemblyQualifiedName), såvida inte typen finns i den pågående sammansättningen eller i mscorlib.dll/System.Private.CoreLib.dll, i vilket fall det räcker att ange det typnamn som kvalificerats av dess namnområde.

assemblyResolver
Func<AssemblyName,Assembly>

En metod som letar upp och returnerar sammansättningen som anges i typeName. Sammansättningsnamnet skickas till assemblyResolver som ett AssemblyName objekt. Om typeName inte innehåller namnet på en sammansättning assemblyResolver anropas inte. Om assemblyResolver inte anges utförs standardmonteringsupplösningen.

Varning: Skicka inte metoder från okända eller ej betrodda anropare. Detta kan leda till utökade privilegier för skadlig kod. Använd endast metoder som du anger eller som du är bekant med.

typeResolver
Func<Assembly,String,Boolean,Type>

En metod som letar upp och returnerar den typ som anges av typeName från sammansättningen som returneras av assemblyResolver eller av standardsammansättningsmatchning. Om ingen sammansättning tillhandahålls typeResolver kan metoden tillhandahålla en. Metoden tar också en parameter som anger om en skiftlägeskänslig sökning ska utföras. false skickas till den parametern.

Varning: Skicka inte metoder från okända eller ej betrodda anropare.

Returer

Typen med det angivna namnet eller null om typen inte hittas.

Attribut

Undantag

typeName är null.

En klassinitierare anropas och utlöser ett undantag.

Ett fel uppstår när typeName parsas till ett typnamn och ett sammansättningsnamn (till exempel när det enkla typnamnet innehåller ett specialtecken som inte är kapslat).

-eller-

typeName representerar en allmän typ som har en pekartyp, en ByRef typ eller Void som ett av dess typargument.

-eller-

typeName representerar en allmän typ som har ett felaktigt antal typargument.

-eller-

typeName representerar en allmän typ och ett av dess typargument uppfyller inte begränsningarna för motsvarande typparameter.

typeName representerar en ogiltig typ, till exempel en matris med TypedReference.

Sammansättningen eller något av dess beroenden hittades, men kunde inte läsas in.

-eller-

typeName innehåller ett ogiltigt sammansättningsnamn.

-eller-

typeName är ett giltigt sammansättningsnamn utan ett typnamn.

Sammansättningen eller något av dess beroenden är inte giltigt för den inlästa körningen.

Kommentarer

Användningsscenarier för den här metoden och information om parametrarna assemblyResolver och typeResolver finns i GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) metodens överlagring.

Note

Om typeName det inte går att hitta returnerar GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)anropet null till metoden . Det utlöser inget undantag. Om du vill kontrollera om ett undantag utlöses anropar du en överlagring av metoden GetType som har en throwOnError parameter.

Att anropa den här metodens överlagring är samma sak som att anropa GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) metodens överlagring och ange false för parametrarna throwOnError och ignoreCase .

Gäller för

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

Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs

Hämtar typen med det angivna namnet, anger om ett undantag ska utlösas om typen inte hittas och om du vill tillhandahålla anpassade metoder för att lösa sammansättningen och typen.

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

Parametrar

typeName
String

Namnet på den typ som ska hämtas. Om parametern typeResolver anges kan typnamnet vara valfri sträng som typeResolver kan matchas. Om parametern assemblyResolver anges eller om standardtypmatchning används typeName måste vara ett sammansättningskvalificerat namn (se AssemblyQualifiedName), såvida inte typen finns i den pågående sammansättningen eller i mscorlib.dll/System.Private.CoreLib.dll, i vilket fall det räcker att ange det typnamn som kvalificerats av dess namnområde.

assemblyResolver
Func<AssemblyName,Assembly>

En metod som letar upp och returnerar sammansättningen som anges i typeName. Sammansättningsnamnet skickas till assemblyResolver som ett AssemblyName objekt. Om typeName inte innehåller namnet på en sammansättning assemblyResolver anropas inte. Om assemblyResolver inte anges utförs standardmonteringsupplösningen.

Varning: Skicka inte metoder från okända eller ej betrodda anropare. Detta kan leda till utökade privilegier för skadlig kod. Använd endast metoder som du anger eller som du är bekant med.

typeResolver
Func<Assembly,String,Boolean,Type>

En metod som letar upp och returnerar den typ som anges av typeName från sammansättningen som returneras av assemblyResolver eller av standardsammansättningsmatchning. Om ingen sammansättning tillhandahålls kan metoden tillhandahålla en. Metoden tar också en parameter som anger om en skiftlägeskänslig sökning ska utföras. false skickas till den parametern.

Varning: Skicka inte metoder från okända eller ej betrodda anropare.

throwOnError
Boolean

true för att utlösa ett undantag om typen inte kan hittas. false för att returnera null. Om du false anger utelämnas även vissa andra undantagsvillkor, men inte alla. Se avsnittet Undantag.

Returer

Typen med det angivna namnet. Om typen inte hittas anger parametern throwOnError om null returneras eller om ett undantag genereras. I vissa fall genereras ett undantag oavsett värdet throwOnErrorför . Se avsnittet Undantag.

Attribut

Undantag

typeName är null.

En klassinitierare anropas och utlöser ett undantag.

throwOnError är true och typen hittades inte.

-eller-

throwOnError är true och typeName innehåller ogiltiga tecken, till exempel en inbäddad flik.

-eller-

throwOnError är true och typeName är en tom sträng.

-eller-

throwOnError är true och typeName representerar en matristyp med en ogiltig storlek.

-eller-

typeName representerar en matris med TypedReference.

Ett fel uppstår när typeName parsas till ett typnamn och ett sammansättningsnamn (till exempel när det enkla typnamnet innehåller ett specialtecken som inte är kapslat).

-eller-

throwOnError är true och typeName innehåller ogiltig syntax (till exempel "MyType[,*,]").

-eller-

typeName representerar en allmän typ som har en pekartyp, en ByRef typ eller Void som ett av dess typargument.

-eller-

typeName representerar en allmän typ som har ett felaktigt antal typargument.

-eller-

typeName representerar en allmän typ och ett av dess typargument uppfyller inte begränsningarna för motsvarande typparameter.

throwOnError är true och sammansättningen eller något av dess beroenden hittades inte.

-eller-

typeName innehåller ett ogiltigt sammansättningsnamn.

-eller-

typeName är ett giltigt sammansättningsnamn utan ett typnamn.

Sammansättningen eller något av dess beroenden hittades, men kunde inte läsas in.

Sammansättningen eller något av dess beroenden är inte giltigt för den inlästa körningen.

Kommentarer

Användningsscenarier för den här metoden och information om parametrarna assemblyResolver och typeResolver finns i GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) metodens överlagring.

Att anropa den här metodens överlagring är samma sak som att anropa GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) metodens överlagring och ange false för parametern ignoreCase .

Gäller för

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

Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs
Källa:
Type.CoreCLR.cs

Hämtar typen med det angivna namnet, anger om en skiftlägeskänslig sökning ska utföras och om ett undantag ska utlösas om typen inte hittas och om du vill ange anpassade metoder för att lösa sammansättningen och typen.

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

Parametrar

typeName
String

Namnet på den typ som ska hämtas. Om parametern typeResolver anges kan typnamnet vara valfri sträng som typeResolver kan matchas. Om parametern assemblyResolver anges eller om standardtypmatchning används typeName måste vara ett sammansättningskvalificerat namn (se AssemblyQualifiedName), såvida inte typen finns i den pågående sammansättningen eller i mscorlib.dll/System.Private.CoreLib.dll, i vilket fall det räcker att ange det typnamn som kvalificerats av dess namnområde.

assemblyResolver
Func<AssemblyName,Assembly>

En metod som letar upp och returnerar sammansättningen som anges i typeName. Sammansättningsnamnet skickas till assemblyResolver som ett AssemblyName objekt. Om typeName inte innehåller namnet på en sammansättning assemblyResolver anropas inte. Om assemblyResolver inte anges utförs standardmonteringsupplösningen.

Varning: Skicka inte metoder från okända eller ej betrodda anropare. Detta kan leda till utökade privilegier för skadlig kod. Använd endast metoder som du anger eller som du är bekant med.

typeResolver
Func<Assembly,String,Boolean,Type>

En metod som letar upp och returnerar den typ som anges av typeName från sammansättningen som returneras av assemblyResolver eller av standardsammansättningsmatchning. Om ingen sammansättning tillhandahålls kan metoden tillhandahålla en. Metoden tar också en parameter som anger om en skiftlägeskänslig sökning ska utföras. värdet ignoreCase för skickas till parametern.

Varning: Skicka inte metoder från okända eller ej betrodda anropare.

throwOnError
Boolean

true för att utlösa ett undantag om typen inte kan hittas. false för att returnera null. Om du false anger utelämnas även vissa andra undantagsvillkor, men inte alla. Se avsnittet Undantag.

ignoreCase
Boolean

trueför att utföra en skiftlägeskänslig sökning efter , för typeNameatt utföra en skiftlägeskänslig sökning efter false. typeName

Returer

Typen med det angivna namnet. Om typen inte hittas anger parametern throwOnError om null returneras eller om ett undantag genereras. I vissa fall genereras ett undantag oavsett värdet throwOnErrorför . Se avsnittet Undantag.

Attribut

Undantag

typeName är null.

En klassinitierare anropas och utlöser ett undantag.

throwOnError är true och typen hittades inte.

-eller-

throwOnError är true och typeName innehåller ogiltiga tecken, till exempel en inbäddad flik.

-eller-

throwOnError är true och typeName är en tom sträng.

-eller-

throwOnError är true och typeName representerar en matristyp med en ogiltig storlek.

-eller-

typeName representerar en matris med TypedReference.

Ett fel uppstår när typeName parsas till ett typnamn och ett sammansättningsnamn (till exempel när det enkla typnamnet innehåller ett specialtecken som inte är kapslat).

-eller-

throwOnError är true och typeName innehåller ogiltig syntax (till exempel "MyType[,*,]").

-eller-

typeName representerar en allmän typ som har en pekartyp, en ByRef typ eller Void som ett av dess typargument.

-eller-

typeName representerar en allmän typ som har ett felaktigt antal typargument.

-eller-

typeName representerar en allmän typ och ett av dess typargument uppfyller inte begränsningarna för motsvarande typparameter.

throwOnError är true och sammansättningen eller något av dess beroenden hittades inte.

Sammansättningen eller något av dess beroenden hittades, men kunde inte läsas in.

-eller-

typeName innehåller ett ogiltigt sammansättningsnamn.

-eller-

typeName är ett giltigt sammansättningsnamn utan ett typnamn.

Sammansättningen eller något av dess beroenden är inte en giltig sammansättning för den inlästa körningen.

Kommentarer

Om assemblyResolver är null i .NET Core 3.0 och senare versioner påverkas sammansättningsbelastningar som utlöses av det här API:et av det aktuella värdet för AssemblyLoadContext.CurrentContextualReflectionContext.

Mer information om det här API:et finns i Kompletterande API-kommentarer för Type.GetType.

Gäller för