Partager via


Compilation.GetTypeByMetadataName(String) Méthode

Définition

Obtient le type dans l’assembly de la compilation et tous les assemblys référencés (autres que ceux qui ne peuvent être référencés qu’à l’aide d’un alias extern) à l’aide de son nom de métadonnées CLR canonique. Cette recherche suit l’ordre suivant :

  1. Si le type est trouvé dans l’assembly de la compilation, ce type est retourné.
  2. Ensuite, la bibliothèque principale (la bibliothèque qui définit System.Object et n’a aucune référence d’assembly) est recherchée. Si le type est trouvé là, ce type est retourné.
  3. Enfin, tous les assemblys non-extern référencés restants sont recherchés. Si un seul type correspondant au nom de métadonnées fourni est trouvé, ce type unique est retourné. L’accessibilité est ignorée pour cette vérification.
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

Paramètres

fullyQualifiedMetadataName
String

Retours

Null si le type n’est pas trouvé ou qu’il y a eu ambiguïté lors de la recherche.

Remarques

Étant donné que VB n’a pas le concept d’alias extern, il considère tous les assemblys référencés.

En C#, si la bibliothèque principale est référencée en tant qu’assembly extern, elle est recherchée. Tous les autres assemblys extern-alias ne seront pas recherchés.

Étant donné que l’accessibilité à l’assembly actuel est ignorée lors de la recherche de types qui correspondent au nom de métadonnées fourni, si plusieurs assemblys référencés définissent le même symbole de type (comme cela se produit souvent lorsque les utilisateurs copient des types connus à partir de la liste de contrôle de contrôle d’accès ou d’autres sources), cette API retourne null, même si l’un de ces symboles est sinon inaccessible au code écrit par l’utilisateur dans l’assembly actuel. Pour un contrôle précis sur la résolution d’ambiguïté, envisagez d’utiliser GetTypesByMetadataName(String) à la place et de filtrer les résultats du symbole requis.

Les assemblys peuvent contenir plusieurs modules. Dans chaque assembly, la recherche est effectuée en fonction de la position du module dans la liste des modules de cet assembly. Lorsqu’une correspondance est trouvée dans un module d’un assembly, aucun autre module de cet assembly n’est recherché.

Les redirecteurs de type sont ignorés et ne sont pas considérés comme faisant partie de l’assembly où TypeForwardAttribute est écrit.

Les ambiguïtés sont détectées sur chaque niveau imbriqué. Par exemple, s’il A+B est demandé et qu’il existe plusieurs As, mais qu’un seul d’entre eux a un B type imbriqué, la recherche est considérée comme ambiguë et null est retournée.

S’applique à