Compartilhar via


Especificando tipo nomes totalmente qualificados

Você deve especificar nomes de tipo tenha válido entrada para várias operações de reflexão.Um nome de tipo totalmente qualificado consiste em uma especificação de nome de assembly, uma especificação de espaço para nome e um nome de tipo.Especificações de nome de tipo são usadas por métodos sistema autônomo, por exemplo, Type.GetType, Module.GetType, ModuleBuilder.GetType, e Assembly.GetType.

Backus Naur formulário gramática para nomes de tipos

A forma de Backus Naur (BNF) define a sintaxe das linguagens formais.A tabela a seguir lista as regras lexicais BNF que descrevem como reconhecer uma entrada válida.Terminais (esses elementos que não são mais reducible) são mostradas em letras maiúsculas.Nonterminals (esses elementos são adicionais reducible) são exibidas em seqüências de caracteres de caso-misto ou individualmente entre aspas, mas a aspa simples (') não é parte da sintaxe própria.O caractere de pipe (|) indica que as regras que têm a sub-regras.

Gramática BNF dos nomes de tipo totalmente qualificado

TypeSpec: = ReferenceTypeSpec

                                        | SimpleTypeSpec

ReferenceTypeSpec: = SimpleTypeSpec '&'

SimpleTypeSpec: = PointerTypeSpec

                                        | ArrayTypeSpec

                                        | TypeName

PointerTypeSpec: = SimpleTypeSpec ' * '

ArrayTypeSpec: = SimpleTypeSpec '[ReflectionDimension]'

                                        | SimpleTypeSpec '[ReflectionEmitDimension]'

ReflectionDimension: = ' * '

                                        | ReflectionDimension ReflectionDimension ','

                                        | NOTOKEN

ReflectionEmitDimension: = ' * '

                                        | Número '' Número

                                        | Número '…'

                                        | ReflectionDimension ReflectionDimension ','

                                        | NOTOKEN

Number                            :=   [0-9]+

TypeName: = NamespaceTypeName

                                        | NamespaceTypeName AssemblyNameSpec ','

NamespaceTypeName: = NestedTypeName

                                        | NamespaceSpec '. ' NestedTypeName

NestedTypeName: = identificador

                                        | NestedTypeName identificador '+'

NamespaceSpec: = identificador

                                        | NamespaceSpec '. ' IDENTIFICADOR

AssemblyNameSpec: = identificador

                                        | identificador AssemblyProperties ','

AssemblyProperties: = AssemblyProperty

                                        | AssemblyProperties AssemblyProperty ','

AssemblyProperty: = AssemblyPropertyValue AssemblyPropertyName '='

Especificar caracteres especiais

Um nome de tipo identificador é qualquer nome válido determinado pelas regras de um linguagem.

Use a barra invertida (\) sistema autônomo um caractere de escape para separar sistema autônomo tokens seguintes quando usado sistema autônomo parte do identificador.

Token

Significado

\,

Separador de assembly.

\+

Separador de tipo aninhado.

\&

Tipo de referência.

\*

Tipo de ponteiro.

\[

Delimitador de dimensão de matriz.

\]

Delimitador de dimensão de matriz.

\.

Use a barra invertida antes de um ponto somente se o período for usado em uma especificação de matriz.Períodos em NamespaceSpec não terão a barra invertida.

\\

Barra invertida quando necessário sistema autônomo uma seqüência de caracteres literal.

Observe que, em todos os componentes TypeSpec exceto AssemblyNameSpec, espaços são relevantes.Em AssemblyNameSpec, espaços antes do separador ',' são relevantes, mas espaços após o separador ',' são ignorados.

Classes de reflexão, sistema autônomo Type.FullName, retornar o nome desconfigurado para que o nome retornado pode ser usado em uma telefonar para GetType, sistema autônomo em MyType.GetType(myType.FullName).

Por exemplo, o nome totalmente qualificado para um tipo pode ser Ozzy.OutBack.Kangaroo+Wallaby,MyAssembly.

Se o espaço para nome fosse Ozzy.Out+Back, em seguida, no sinal de adição deve ser precedido por uma barra invertida. Caso contrário, o analisador pode interpretá-lo sistema autônomo um separador de aninhamento.Reflexão emite essa seqüência de caracteres sistema autônomo Ozzy.Out\+Back.Kangaroo+Wallaby,MyAssembly.

Especificando nomes de assembly

As informações mínimas necessárias em uma especificação de nome do assembly é o nome textual (identificador) do assembly.Você pode seguir o identificador por uma lista separada por vírgulas de pares de propriedade/valor conforme descrito na tabela a seguir.Nomeando identificador deve seguir as regras de nomeação de arquivo.O identificador não diferencia maiúsculas de minúsculas.

Nome de propriedade

Descrição

Valores permitidos

Versão

Número da versão do assembly

Principal.secundária.compilação.revisão, where Principais, Secundária, Compilação, and Revisão são números inteiros entre 0 e 65535, inclusive.

PublicKey

Chave pública completa

Valor de chave pública completa em formato hexadecimal da seqüência.Especificar uma referência nula (Nada no Visual Basic) para indicar explicitamente um assembly privado.

PublicKeyToken

Token de chave pública (8 byte hash da chave pública completa)

Valor de token de chave pública em formato hexadecimal da seqüência.Especificar uma referência nula (Nada no Visual Basic) para indicar explicitamente um assembly privado.

Cultura

Cultura de assembly

Cultura do assembly em formato RFC 1766, ou "neutral" para assemblies independente de linguagem (nonsatellite).

Personalizado

Personalizado grande BLOB (objeto binário).Isso é usado atualmente apenas em assemblies gerados pelo Gerador de imagem nativa NGen).

Seqüência de caracteres personalizada usada pela ferramenta nativo Image gerador para notificar o cache de assemblies que o assembly que está sendo instalado é uma imagem nativa e, portanto, é para ser instalado no cache de imagem nativa.Também chamado de uma seqüência de caracteres zap.

O exemplo a seguir mostra um AssemblyName para um assembly nomeado simplesmente com a cultura padrão.

com.microsoft.crypto, Culture="" 

O exemplo a seguir mostra uma referência totalmente especificada para um assembly fortemente nomeado com a cultura "en".

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

Os exemplos a seguir cada mostram um parcialmente especificado assembly Nome, que podem ser atendidas por um forte ou simplesmente nomeado assembly.

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

Os exemplos a seguir cada mostram um parcialmente especificado AssemblyName, que devem ser atendidos por um conjunto de nome simples.

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

Os exemplos a seguir cada mostram um parcialmente especificado AssemblyName, que devem ser atendidos por um assembly fortemente nomeado.

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

Especificação de ponteiros

SimpleTypeSpec * representa um ponteiro não gerenciado.Por exemplo, para obter um ponteiro para digitar MyType, use Type.GetType("MyType*"). Para obter um ponteiro para um ponteiro para digitar MyType, use Type.GetType("MyType**").

Especificação de referências

SimpleTypeSpec & representa um ponteiro gerenciado ou referência.Por exemplo, para obter uma referência ao tipo MyType, use Type.GetType("MyType &"). Observe que, diferentemente de ponteiros, referências são limitadas a um nível.

Especificação de arrays

Na gramática BNF, ReflectionEmitDimension só se aplica a definições de tipo incompleta recuperadas usando ModuleBuilder.GetType. Definições de tipo incompletas são TypeBuilder objetos criados com reflexão.Emit , mas no qual TypeBuilder.CreateType não foi chamado. ReflectionDimension pode ser usado para recuperar qualquer definição de tipo que foi concluída, ou seja, um tipo que foi carregado.

Arrays são acessados na reflexão, especificando a classificar da matriz:

  • Type.GetType("MyArray[]") obtém uma matriz de dimensão única com limite inferior 0.

  • Type.GetType("MyArray[*]") obtém uma matriz de dimensão única com limite inferior desconhecido.

  • Type.GetType("MyArray[][]") obtém matriz de uma matriz bidimensional.

  • Type.GetType("MyArray[*,*]") e Type.GetType("MyArray[,]") obtém uma matriz bidimensional retangular com limites inferiores como desconhecidos.

Observe que, de uma tempo de execução do ponto de Vista, MyArray[] != MyArray[*], mas para matrizes multidimensionais, as duas notações são equivalentes. Ou seja, Type.GetType("MyArray [,]") == Type.GetType("MyArray[*,*]") é avaliada como True.

For ModuleBuilder.GetType, MyArray[0..5] indica uma matriz de dimensão única com dimensionar 6, o limite inferior 0. MyArray[4…] indica uma matriz de dimensão única de dimensionar desconhecido e limite inferior 4.

Consulte também

Conceitos

Exibindo informações de tipo

Referência

AssemblyName

ModuleBuilder

TypeBuilder

Type.FullName

Type.GetType

Type.AssemblyQualifiedName