Freigeben über


Compilation.GetTypeByMetadataName(String) Methode

Definition

Ruft den Typ innerhalb der Assembly der Kompilierung und alle referenzierten Assemblys (außer denen, auf die nur über einen externen Alias verwiesen werden kann) mithilfe des kanonischen CLR-Metadatennamens ab. Dieser Nachschlagevorgang folgt der folgenden Reihenfolge:

  1. Wenn der Typ in der Assembly der Kompilierung gefunden wird, wird dieser Typ zurückgegeben.
  2. Als Nächstes wird die Kernbibliothek (die Bibliothek, die keine Assemblybezüge definiert System.Object und enthält) durchsucht. Wenn der Typ dort gefunden wird, wird dieser Typ zurückgegeben.
  3. Schließlich werden alle verbleibenden referenzierten nicht externen Assemblys durchsucht. Wenn ein und nur ein Typ mit dem angegebenen Metadatennamen übereinstimmen, wird dieser einzelne Typ zurückgegeben. Die Barrierefreiheit wird für diese Überprüfung ignoriert.
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

Parameter

fullyQualifiedMetadataName
String

Gibt zurück

Null, wenn der Typ nicht gefunden werden kann oder während der Nachschlagevorgang eine Unklarheit aufgetreten ist.

Hinweise

Da VB nicht über das Konzept externer Aliase verfügt, wird alle referenzierten Assemblys berücksichtigt.

In C#, wenn die Kernbibliothek als externe Assembly verwiesen wird, wird sie durchsucht. Alle anderen extern aliasen Assemblys werden nicht durchsucht.

Da die Barrierefreiheit der aktuellen Assembly beim Suchen nach Typen, die dem angegebenen Metadatennamen entsprechen, ignoriert wird, wenn mehrere referenzierte Assemblys das gleiche Typsymbol definieren (wie häufig geschieht, wenn Benutzer bekannte Typen aus der BCL oder anderen Quellen kopieren), gibt diese API null zurück, selbst wenn alle, aber eines dieser Symbole anderweitig nicht für den benutzergeschriebenen Code in der aktuellen Assembly zugänglich wäre. Bei feiner Kontrolle über die Auflösung von Ambiguität sollten Sie stattdessen die Ergebnisse für das erforderliche Symbol filtern GetTypesByMetadataName(String) .

Assemblys können mehrere Module enthalten. In jeder Assembly wird die Suche basierend auf der Position des Moduls in der Modulliste dieser Assembly ausgeführt. Wenn eine Übereinstimmung in einem Modul in einer Assembly gefunden wird, werden keine weiteren Module in dieser Assembly durchsucht.

Typweiterleitungen werden ignoriert und nicht als Teil der Assembly betrachtet, in der das TypeForwardAttribute geschrieben wird.

Ambiguitäten werden auf jeder geschachtelten Ebene erkannt. Wenn A+B sie beispielsweise angefordert werden, und es gibt mehrere As, aber nur einen von ihnen hat einen B geschachtelten Typ, wird die Nachschlagevorgang als mehrdeutig betrachtet und Null wird zurückgegeben.

Gilt für: