MetadataLoadContext.CoreAssembly 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定表示裝載已知型別 (例如 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
屬性值
Assembly 執行個體。
備註
核心元件處理方式與其他元件不同,因為這些已知類型的參考不包含元件參考,與一般類型不同。
一般而言,此元件名為 「mscorlib」 或 「netstandard」。。 如果找不到核心元件,此值會是 null
,而許多其他反映方法,包括剖析方法簽章的方法,將會擲回例外狀況。
是CoreAssembly
藉由將傳遞至建構函式的參數MetadataAssemblyResolver傳遞coreAssemblyName
至 MetadataAssemblyResolver.Resolve 方法來決定。
如果在 的建MetadataLoadContext構函式中未指定任何coreAssemblyName
自變數,則會使用預設值,包括 “mscorlib”、“System.Runtime” 和 “netstandard”。
指定的核心元件不需要直接包含核心類型。 它可以輸入轉送至其他元件。 因此,使用 mscorlib 外觀做為指定的核心元件是完全允許的。
請注意, System.Runtime 這不是理想的核心元件,因為它會排除某些與 Interop 相關的虛擬自訂屬性類型,例如 DllImportAttribute。 不過,如果您對這些屬性沒有興趣,它可以提供服務。 如果核心元件不包含必要的類型,CustomAttributes API 將會略過這些屬性。
在必要之前,不會載入核心元件。 下列 API 不會觸發核心元件的搜尋:
- MetadataLoadContext.LoadFromStream
- MetadataLoadContext.LoadFromAssemblyPath
- MetadataLoadContext.LoadFromByteArray
- Assembly.GetName
- Assembly.FullName
- Assembly.GetReferencedAssemblies
- Assembly.GetTypes
- Assembly.DefinedTypes
- Assembly.GetExportedTypes
- Assembly.GetForwardedTypes
- Assembly.GetType(String, Boolean, Boolean)
- Type.Name
- Type.FullName
- Type.AssemblyQualifiedName
如果找不到核心元件,或核心元件缺少類型,這會影響 的行為 MetadataLoadContext ,如下所示:
需要剖析簽章或 typespec 並傳回結果的 API,因為 Type 對象會擲回例外狀況。 例如:
需要比較型別與已知核心型別的 API 不會擲回例外狀況,而且比較會評估為
false
。 例如,如果您未指定核心元件, IsPrimitive 則會針對所有項目傳回false
,甚至是名為 Int32的類型。 同樣地, Type.GetTypeCode 將會針對所有項目傳回 Object 。如果元資料實體將介面旗標設定為虛擬自訂屬性,而且核心元件不包含虛擬自定義屬性類型、必要的建構函式或任何建構函式的參數類型, MetadataLoadContext 則不會擲回 。 它會從傳回的屬性清單中省略虛擬自定義屬性。