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; }
public System.Reflection.Assembly? CoreAssembly { get; }
member this.CoreAssembly : System.Reflection.Assembly
Public ReadOnly Property CoreAssembly As Assembly

Valore della proprietà

Assembly

Istanza di Assembly.

Commenti

L'assembly principale viene trattato in modo diverso rispetto ad 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 principale, il valore sarà nulle molti altri metodi di reflection, inclusi quelli che analizzano le firme del metodo, genereranno un'eccezione.

L'oggetto CoreAssembly viene determinato passando il coreAssemblyName parametro passato al MetadataAssemblyResolver costruttore al MetadataAssemblyResolver.Resolve metodo .

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

L'assembly core designato non deve contenere direttamente i tipi di core. Può digitarli in avanti ad 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 attributo pseudo-personalizzati correlati all'interoperabilità, ad DllImportAttributeesempio . Tuttavia, può servire se non si ha alcun interesse per tali attributi. L'API CustomAttributes ignorerà questi attributi se l'assembly principale non include i tipi necessari.

L'assembly principale non viene caricato fino a quando non è necessario. Le API seguenti non attivano la ricerca dell'assembly principale:

Se non è possibile trovare un assembly di base o se l'assembly principale non contiene tipi, questo influirà sul comportamento di come indicato di MetadataLoadContext seguito:

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

  • Le API che devono confrontare i tipi con tipi di core noti non genereranno un'eccezione e il confronto restituirà false. Ad esempio, se non si specifica un assembly principale, IsPrimitive restituirà false tutti gli elementi, anche i tipi denominati Int32. Analogamente, Type.GetTypeCode restituirà Object tutto.

  • Se un'entità di metadati imposta flag che vengono visualizzati come attributo pseudo-personalizzato e l'assembly principale non contiene il tipo di attributo pseudo-personalizzato, il costruttore necessario o uno qualsiasi dei tipi di parametro del costruttore, l'oggetto MetadataLoadContext non genererà. Ometterà l'attributo pseudo-personalizzato dall'elenco degli attributi restituiti.

Si applica a