Compilation.GetTypeByMetadataName(String) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene el tipo dentro del ensamblado de la compilación y todos los ensamblados a los que se hace referencia (excepto aquellos a los que solo se puede hacer referencia a través de un alias extern) mediante su nombre de metadatos CLR canónico. Esta búsqueda sigue el orden siguiente:
- Si el tipo se encuentra en el ensamblado de la compilación, se devuelve ese tipo.
-
A continuación, se busca en la biblioteca principal (la biblioteca que define
System.Object
y no tiene referencias de ensamblado). Si el tipo se encuentra allí, se devuelve ese tipo. - Por último, se busca en todos los ensamblados no extern a los que se hace referencia. Si se encuentra uno y solo un tipo que coincida con el nombre de metadatos proporcionado, se devuelve ese tipo único. La accesibilidad se omite para esta comprobación.
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
Devoluciones
Null si no se encuentra el tipo o se produjo una ambigüedad durante la búsqueda.
Comentarios
Puesto que VB no tiene el concepto de alias extern, considera todos los ensamblados a los que se hace referencia.
En C#, si se hace referencia a la biblioteca principal como un ensamblado extern, se buscará en ella. No se buscarán todos los demás ensamblados con alias extern.
Dado que la accesibilidad al ensamblado actual se omite al buscar tipos que coincidan con el nombre de metadatos proporcionados, si varios ensamblados a los que se hace referencia definen el mismo símbolo de tipo (como sucede a menudo cuando los usuarios copian tipos conocidos de la BCL u otros orígenes), esta API devolverá null, incluso si todos pero uno de esos símbolos sería inaccesible para el código escrito por el usuario en el ensamblado actual. Para un control específico sobre la resolución de ambigüedad, considere la posibilidad de usar GetTypesByMetadataName(String) en su lugar y filtrar los resultados para el símbolo necesario.
Los ensamblados pueden contener varios módulos. Dentro de cada ensamblado, la búsqueda se realiza en función de la posición del módulo en la lista de módulos de ese ensamblado. Cuando se encuentra una coincidencia en un módulo de un ensamblado, no se buscan más módulos dentro de ese ensamblado.
Los reenviadores de tipos se omiten y no se consideran parte del ensamblado donde se escribe typeForwardAttribute.
Las ambigüedades se detectan en cada nivel anidado. Por ejemplo, si A+B
se solicita y hay varios A
, pero solo uno de ellos tiene un B
tipo anidado, la búsqueda se considerará ambigua y se devolverá null.