Condividi tramite


MetadataLoadContext.CoreAssembly Proprietà

Definizione

Ottiene o imposta l'assembly che denota "l'assembly di sistema" che contiene i tipi noti, come ad esempio 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

Valore della proprietà

Istanza di Assembly.

Commenti

L'assembly di base viene trattato in modo diverso da altri assembly perché i riferimenti a questi tipi noti non includono il riferimento all'assembly, a differenza dei tipi normali.

In genere, questo assembly è denominato "mscorlib" o "netstandard". Se non è possibile trovare l'assembly di base, il valore sarà nulle molti altri metodi di reflection, inclusi quelli che analizzano le firme del metodo, genereranno un'eccezione.

Viene CoreAssembly determinato passando il coreAssemblyName parametro passato al MetadataAssemblyResolver costruttore al MetadataAssemblyResolver.Resolve metodo .

Se non coreAssemblyName è stato specificato alcun argomento nel costruttore di MetadataLoadContext, vengono usati i valori predefiniti, tra cui "mscorlib", "System.Runtime" e "netstandard".

L'assembly core designato non deve contenere direttamente i tipi di base. Può digitarli in altri assembly. Pertanto, è perfettamente consentito usare la facciata mscorlib come assembly di base designato.

Si noti che System.Runtime non è un assembly core ideale perché esclude alcuni dei tipi di attributi pseudo-personalizzati correlati all'interoperabilità, ad esempio DllImportAttribute. Tuttavia, può servire se non si ha alcun interesse per tali attributi. L'API CustomAttributes ignora tali attributi se l'assembly di base non include i tipi necessari.

L'assembly di base non viene caricato finché non è necessario. Le API seguenti non attivano la ricerca dell'assembly di base:

Se non è possibile trovare un assembly di base o se l'assembly di base manca di tipi, questo influisce sul comportamento del MetadataLoadContext componente come indicato di seguito:

  • API che devono analizzare firme o tipipecs e restituire i risultati come Type oggetti genereranno un'eccezione. Ad esempio:

  • Le API che devono confrontare i tipi a tipi di core noti non genereranno un'eccezione e il confronto valuterà false. Ad esempio, se non si specifica un assembly di base, verrà restituito false per tutto, IsPrimitive anche i tipi denominati Int32. Analogamente, Type.GetTypeCode restituirà Object tutto.

  • Se un'entità di metadati imposta i flag che escludono un attributo pseudo-personalizzato e l'assembly di base non contiene il tipo di attributo pseudo-personalizzato, il costruttore necessario o uno dei tipi di parametri del costruttore, l'oggetto MetadataLoadContext non genererà. Ometterà l'attributo pseudo-personalizzato dall'elenco di attributi restituiti.

Si applica a