Partilhar via


MetadataLoadContext.CoreAssembly Propriedade

Definição

Obtém ou define o assembly que denota o "assembly de sistema" que hospeda os tipos conhecidos, tais como Int32.

public:
 property System::Reflection::Assembly ^ CoreAssembly { System::Reflection::Assembly ^ get(); };
public System.Reflection.Assembly? CoreAssembly { get; }
member this.CoreAssembly : System.Reflection.Assembly
Public ReadOnly Property CoreAssembly As Assembly

Valor da propriedade

Uma instância Assembly.

Comentários

O assembly principal é tratado de forma diferente de outros assemblies porque as referências a esses tipos conhecidos não incluem a referência de assembly, ao contrário dos tipos normais.

Normalmente, esse assembly é chamado de "mscorlib" ou "netstandard". Se o assembly principal não puder ser encontrado, o valor será nulle muitos outros métodos de reflexão, incluindo aqueles que analisam assinaturas de método, gerarão uma exceção.

O CoreAssembly é determinado passando o coreAssemblyName parâmetro passado para o MetadataAssemblyResolver construtor para o MetadataAssemblyResolver.Resolve método .

Se nenhum coreAssemblyName argumento tiver sido especificado no construtor de MetadataLoadContext, os valores padrão serão usados, incluindo "mscorlib", "System.Runtime" e "netstandard".

O assembly principal designado não precisa conter os tipos principais diretamente. Ele pode digitá-los para outros assemblies. Portanto, é perfeitamente permitido usar a fachada mscorlib como o assembly principal designado.

Observe que System.Runtime não é um assembly principal ideal porque exclui alguns dos tipos de atributo pseudo-personalizado relacionados à interoperabilidade, como DllImportAttribute. No entanto, ele poderá servir se você não tiver interesse nesses atributos. A API CustomAttributes ignorará esses atributos se o assembly principal não incluir os tipos necessários.

O assembly principal não é carregado até que seja necessário. As seguintes APIs não disparam a pesquisa para o assembly principal:

Se um assembly principal não puder ser encontrado ou se o assembly principal estiver faltando tipos, isso afetará o comportamento do da MetadataLoadContext seguinte maneira:

  • APIs que precisam analisar assinaturas ou tipospecs e retornar os resultados, pois Type os objetos gerarão uma exceção. Por exemplo:

  • APIs que precisam comparar tipos com tipos de núcleo conhecidos não gerarão uma exceção e a comparação será avaliada como false. Por exemplo, se você não especificar um assembly principal, IsPrimitive retornará false para tudo, até mesmo tipos chamados Int32. Da mesma forma, Type.GetTypeCode retornará Object para tudo.

  • Se uma entidade de metadados definir sinalizadores que são exibidos como um atributo pseudo-personalizado e o assembly principal não contiver o tipo de atributo pseudo-personalizado, o construtor necessário ou qualquer um dos tipos de parâmetro do construtor, o MetadataLoadContext não será gerado. Ele omitirá o atributo pseudo-personalizado da lista de atributos retornados.

Aplica-se a