Condividi tramite


Compilation.GetTypeByMetadataName(String) Metodo

Definizione

Ottiene il tipo all'interno dell'assembly della compilazione e tutti gli assembly a cui si fa riferimento (oltre a quelli a cui è possibile fare riferimento solo tramite un alias extern) usando il nome dei metadati CLR canonico. Questa ricerca segue l'ordine seguente:

  1. Se il tipo viene trovato nell'assembly della compilazione, tale tipo viene restituito.
  2. Successivamente, viene eseguita la ricerca della libreria di base (la libreria che definisce System.Object e non ha riferimenti all'assembly). Se viene trovato il tipo, tale tipo viene restituito.
  3. Infine, tutti gli assembly non extern a cui si fa riferimento vengono ricercati. Se viene trovato un solo tipo corrispondente al nome dei metadati specificato, viene restituito tale singolo tipo. L'accessibilità viene ignorata per questo controllo.
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

Parametri

fullyQualifiedMetadataName
String

Restituisce

Null se il tipo non è stato trovato o si è verificato un'ambiguità durante la ricerca.

Commenti

Poiché VB non ha il concetto di alias extern, considera tutti gli assembly a cui si fa riferimento.

In C#, se la libreria di base viene fatto riferimento come assembly extern, verrà eseguita la ricerca. Tutti gli altri assembly con alias extern non verranno cercati.

Poiché l'accessibilità all'assembly corrente viene ignorata durante la ricerca di tipi che corrispondono al nome dei metadati specificato, se più assembly a cui si fa riferimento definiscono lo stesso simbolo di tipo (come spesso accade quando gli utenti copiano tipi noti dall'elenco BCL o altre origini), questa API restituirà null, anche se tutti i simboli, ma uno di questi simboli sarebbe altrimenti inaccessibile al codice scritto dall'utente nell'assembly corrente. Per il controllo con granularità fine sulla risoluzione delle ambiguità, è consigliabile usare GetTypesByMetadataName(String) invece e filtrare i risultati per il simbolo richiesto.

Gli assembly possono contenere più moduli. All'interno di ogni assembly, la ricerca viene eseguita in base alla posizione del modulo nell'elenco dei moduli di tale assembly. Quando viene trovata una corrispondenza in un modulo in un assembly, non vengono cercati altri moduli all'interno di tale assembly.

Gli inoltro dei tipi vengono ignorati e non considerati parte dell'assembly in cui viene scritto TypeForwardAttribute.

Le ambiguità vengono rilevate su ogni livello annidato. Ad esempio, se A+B richiesto e sono presenti più As, ma solo uno di essi ha un B tipo annidato, la ricerca verrà considerata ambigua e verrà restituito null.

Si applica a