Partilhar via


Compilation.GetTypeByMetadataName(String) Método

Definição

Obtém o tipo dentro do assembly da compilação e todos os assemblies referenciados (exceto aqueles que só podem ser referenciados por meio de um alias extern) usando seu nome de metadados CLR canônico. Essa pesquisa segue a seguinte ordem:

  1. Se o tipo for encontrado no assembly da compilação, esse tipo será retornado.
  2. Em seguida, a biblioteca principal (a biblioteca que define System.Object e não tem referências de assembly) é pesquisada. Se o tipo for encontrado lá, esse tipo será retornado.
  3. Por fim, todos os assemblies não extern referenciados restantes são pesquisados. Se um e apenas um tipo que corresponde ao nome de metadados fornecido for encontrado, esse único tipo será retornado. A acessibilidade é ignorada para essa verificação.
public:
 Microsoft::CodeAnalysis::INamedTypeSymbol ^ GetTypeByMetadataName(System::String ^ fullyQualifiedMetadataName);
public Microsoft.CodeAnalysis.INamedTypeSymbol GetTypeByMetadataName (string fullyQualifiedMetadataName);
public Microsoft.CodeAnalysis.INamedTypeSymbol? GetTypeByMetadataName (string fullyQualifiedMetadataName);
member this.GetTypeByMetadataName : string -> Microsoft.CodeAnalysis.INamedTypeSymbol
Public Function GetTypeByMetadataName (fullyQualifiedMetadataName As String) As INamedTypeSymbol

Parâmetros

fullyQualifiedMetadataName
String

Retornos

Nulo se o tipo não puder ser encontrado ou houver uma ambiguidade durante a pesquisa.

Comentários

Como a VB não tem o conceito de aliases extern, ela considera todos os assemblies referenciados.

Em C#, se a biblioteca principal for referenciada como um assembly extern, ela será pesquisada. Todos os outros assemblies extern-aliased não serão pesquisados.

Como a acessibilidade para o assembly atual é ignorada ao pesquisar tipos que correspondem ao nome de metadados fornecido, se vários assemblies referenciados definirem o mesmo símbolo de tipo (como geralmente acontece quando os usuários copiam tipos conhecidos do BCL ou de outras fontes), essa API retornará nulo, mesmo que todos, exceto um desses símbolos, sejam inacessíveis para o código escrito pelo usuário no assembly atual. Para um controle refinado sobre a resolução de ambiguidade, considere usar GetTypesByMetadataName(String) e filtrar os resultados do símbolo necessário.

Os assemblies podem conter vários módulos. Em cada assembly, a pesquisa é executada com base na posição do módulo na lista de módulos desse assembly. Quando uma correspondência é encontrada em um módulo em um assembly, nenhum outro módulo dentro desse assembly é pesquisado.

Os encaminhadores de tipo são ignorados e não são considerados parte do assembly em que o TypeForwardAttribute é gravado.

Ambiguidades são detectadas em cada nível aninhado. Por exemplo, se A+B for solicitado e houver vários As, mas apenas um deles tiver um B tipo aninhado, a pesquisa será considerada ambígua e nula será retornada.

Aplica-se a