Dela via


Ange fullständigt kvalificerade typnamn

Du måste ange typnamn för att ha giltiga indata till olika reflektionsfunktioner. Ett fullständigt kvalificerat typnamn består av en sammansättningsnamnspecifikation, en namnområdesspecifikation och ett typnamn. Typnamnsspecifikationer används med metoder som Type.GetType, Module.GetType, ModuleBuilder.GetTypeoch Assembly.GetType.

Grammatik för typnamn

Grammatiken definierar syntaxen för formella språk. I följande tabell visas lexikala regler som beskriver hur du känner igen en giltig indata. Terminaler (de element som inte kan reduceras ytterligare) visas i alla versaler. Icke-terminaler (de element som är vidare reducerbara) visas i blandade eller enkelt citerade teckensträngar, men det enkla citattecknet (') är inte en del av själva syntaxen. Pipe-tecknet (|) anger regler som har underregler.

TypeSpec
	: ReferenceTypeSpec
	| SimpleTypeSpec
	;

ReferenceTypeSpec
	: SimpleTypeSpec '&'
	;

SimpleTypeSpec
	: PointerTypeSpec
	| GenericTypeSpec
	| TypeName
	;

GenericTypeSpec
   : SimpleTypeSpec ` NUMBER

PointerTypeSpec
	: SimpleTypeSpec '*'
	;

ArrayTypeSpec
	: SimpleTypeSpec '[ReflectionDimension]'
	| SimpleTypeSpec '[ReflectionEmitDimension]'
	;

ReflectionDimension
	: '*'
	| ReflectionDimension ',' ReflectionDimension
	| NOTOKEN
	;

ReflectionEmitDimension
	: '*'
	| Number '..' Number
	| Number '…'
	| ReflectionDimension ',' ReflectionDimension
	| NOTOKEN
	;

Number
	: [0-9]+
	;

TypeName
	: NamespaceTypeName
	| NamespaceTypeName ',' AssemblyNameSpec
	;

NamespaceTypeName
	: NestedTypeName
	| NamespaceSpec '.' NestedTypeName
	;

NestedTypeName
	: IDENTIFIER
	| NestedTypeName '+' IDENTIFIER
	;

NamespaceSpec
	: IDENTIFIER
	| NamespaceSpec '.' IDENTIFIER
	;

AssemblyNameSpec
	: IDENTIFIER
	| IDENTIFIER ',' AssemblyProperties
	;

AssemblyProperties
	: AssemblyProperty
	| AssemblyProperties ',' AssemblyProperty
	;

AssemblyProperty
	: AssemblyPropertyName '=' AssemblyPropertyValue
	;

Ange specialtecken

I ett typnamn är IDENTIFIER vilket som helst giltigt namn som bestäms av språkets regler.

Använd omvänt snedstreck (\) som ett escape-tecken för att separera följande token när de används som en del av IDENTIFIER.

Bevis Innebörd
\, Sammansättningsavgränsare.
\+ Kapslad typavgränsare.
\& Referenstyp.
\* Pekartyp.
\[ Avgränsare för matrisdimension.
\] Avgränsare för matrisdimension.
\. Använd omvänt snedstreck före en period endast om perioden används i en matrisspecifikation. Perioder i NamespaceSpec tar inte omvänt snedstreck.
\\ Backslash när det behövs som ett stränguttryck.

I alla TypeSpec-komponenter utom AssemblyNameSpec är blanksteg relevanta. I AssemblyNameSpec är blanksteg före ','-avgränsaren relevanta, men blanksteg efter ','-avgränsaren ignoreras.

Reflektionsklasser, till exempel Type.FullName, returnerar det manglade namnet så att det returnerade namnet kan användas i ett anrop till GetType, som i MyType.GetType(myType.FullName).

Till exempel kan det fullständigt kvalificerade namnet för en typ vara Ozzy.OutBack.Kangaroo+Wallaby,MyAssembly.

Om namnområdet var Ozzy.Out+Backmåste plustecknet föregås av ett omvänt snedstreck. Annars tolkar parsern det som en kapslingsavgränsare. Reflektion emitterar denna sträng som Ozzy.Out\+Back.Kangaroo+Wallaby,MyAssembly.

Ange sammansättningsnamn

Den minsta information som krävs i en sammansättningsnamnspecifikation är sammansättningens textnamn (IDENTIFIER). Du kan följa identifieraren med en kommaavgränsad lista över egenskaps-/värdepar enligt beskrivningen i följande tabell. NAMNGIVNING AV IDENTIFIERARE bör följa reglerna för filnamngivning. IDENTIFIERAREN är inte skiftlägeskänslig.

Egenskapsnamn Beskrivning Tillåtna värden
Version: Versionsnummer för assembly Major.Minor.Build.Revision, där Major, Minor, Build och Revision är heltal mellan 0 och 65535.
PublicKey Fullständig offentlig nyckel Strängvärde för fullständig offentlig nyckel i hexadecimalt format. Ange en null-referens (ingenting i Visual Basic) för att uttryckligen ange en privat sammansättning.
PublicKeyToken Offentlig nyckel-token (8-byte-hash för den fullständiga offentliga nyckeln) Strängvärde för offentlig nyckeltoken i hexadecimalt format. Ange en null-referens (ingenting i Visual Basic) för att uttryckligen ange en privat sammansättning.
Kultur Sammansättningskultur Sammansättningskultur i RFC-1766-format, eller "neutral" för språkoberoende sammansättningar (nonsatellite).
Skräddarsydd Anpassat binärt stort objekt (BLOB). Detta används för närvarande endast i sammansättningar som genereras av Ngen (Native Image Generator). Anpassad sträng som används av verktyget Native Image Generator för att meddela sammansättningscacheminnet att sammansättningen som installeras är en native avbildning och därför ska installeras i den native avbildningscacheminnet. Kallas även för en zap-sträng.

I följande exempel visas ett AssemblyName för en helt enkelt namngiven sammansättning med standardkultur.

com.microsoft.crypto, Culture=""

I följande exempel visas en fullständigt angiven referens för en starkt namngiven sammansättning med kulturen "en".

com.microsoft.crypto, Culture=en, PublicKeyToken=a5d015c7d5a0b012,
    Version=1.0.0.0

I följande exempel visas ett delvis angivet AssemblyName, som kan uppfyllas av antingen en stark eller en helt enkelt namngiven sammansättning.

com.microsoft.crypto
com.microsoft.crypto, Culture=""
com.microsoft.crypto, Culture=en

I följande exempel visas ett delvis angivet AssemblyName, som måste uppfyllas av en helt enkelt namngiven sammansättning.

com.microsoft.crypto, Culture="", PublicKeyToken=null
com.microsoft.crypto, Culture=en, PublicKeyToken=null

I följande exempel visas ett delvis angivet AssemblyName, som måste uppfyllas av en starkt namngiven sammansättning.

com.microsoft.crypto, Culture="", PublicKeyToken=a5d015c7d5a0b012
com.microsoft.crypto, Culture=en, PublicKeyToken=a5d015c7d5a0b012,
    Version=1.0.0.0

Ange allmänna typer

SimpleTypeSpec'NUMBER representerar en öppen allmän typ med parametrar av typen 1 till n . Om du till exempel vill hämta en referens till den öppna generiska typen List<T> eller den stängda generiska typen List<String>använder Type.GetType("System.Collections.Generic.List`1") du För att hämta en referens till den generiska typen Dictionary<TKey,TValue>använder du Type.GetType("System.Collections.Generic.Dictionary`2").

Ange pekare

SimpleTypeSpec* representerar en ohanterad pekare. Om du till exempel vill hämta en pekare för att skriva MyType använder du Type.GetType("MyType*"). För att få en pekare till en pekare av typen MyType, använd Type.GetType("MyType**").

Ange referenser

SimpleTypeSpec & representerar en hanterad pekare eller referens. Om du till exempel vill hämta en referens för att skriva MyType använder du Type.GetType("MyType &"). Till skillnad från pekare är referenser begränsade till en nivå.

Specificera matriser

I BNF-grammatiken gäller ReflectionEmitDimension endast för ofullständiga typdefinitioner som hämtats med .ModuleBuilder.GetType Ofullständiga typdefinitioner är TypeBuilder objekt som skapas med System.Reflection.Emit, men där TypeBuilder.CreateType inte har anropats. ReflectionDimension kan användas för att hämta vilken typdefinition som helst som har slutförts, dvs. en typ som har lästs in.

Matriser används i reflektion genom att ange matrisens rangordning:

  • Type.GetType("MyArray[]") hämtar en matris med en dimension med 0 nedre gräns.
  • Type.GetType("MyArray[*]") hämtar en matris med en dimension med okänd nedre gräns.
  • Type.GetType("MyArray[][]") hämtar en tvådimensionell matris.
  • Type.GetType("MyArray[*,*]") och Type.GetType("MyArray[,]") hämtar en rektangulär tvådimensionell matris med okända nedre gränser.

Ur körtidsperspektiv, MyArray[] != MyArray[*], men för flerdimensionella matriser är de två notationerna likvärdiga. Det vill säga, Type.GetType("MyArray [,]") == Type.GetType("MyArray[*,*]") utvärderas till sant.

För ModuleBuilder.GetType anger MyArray[0..5] en endimensionell matris med storlek 6 och undre gräns 0. MyArray[4…] anger en matris med en dimension med okänd storlek och lägre gräns 4.

Se även