MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從指定的元件名稱傳回元件。
public:
abstract System::Reflection::Assembly ^ Resolve(System::Reflection::MetadataLoadContext ^ context, System::Reflection::AssemblyName ^ assemblyName);
public abstract System.Reflection.Assembly? Resolve (System.Reflection.MetadataLoadContext context, System.Reflection.AssemblyName assemblyName);
abstract member Resolve : System.Reflection.MetadataLoadContext * System.Reflection.AssemblyName -> System.Reflection.Assembly
Public MustOverride Function Resolve (context As MetadataLoadContext, assemblyName As AssemblyName) As Assembly
參數
- context
- MetadataLoadContext
中繼資料載入內容物件,代表為僅供檢查目的而載入之 Type 物件的封閉宇宙。
- assemblyName
- AssemblyName
組件的名稱。
傳回
提供的 assemblyName
的元件。
備註
呼叫 時,或當某個元件中的類型相依於另一個元件時 LoadFromAssemblyName ,就會將元件名稱系結至元件。 覆寫 Resolve
的處理程式應該使用 MetadataLoadContext.LoadFromStream, MetadataLoadContext.LoadFromAssemblyPath 或 MetadataLoadContext.LoadFromByteArray 載入要求的元件並傳回它。
若要指出找不到元件失敗,處理程式應該會傳回 ,而不是擲回 null
例外狀況。 傳 null
回會認可失敗,以便未來嘗試載入該名稱將會失敗,而不會重新叫用處理程式。
如果處理程式擲回例外狀況,則會將例外狀況傳遞至叫用觸發系結之作業的應用程式。 MetadataLoadContext不會攔截它,也不會發生任何系結。
除非兩個線程競爭載入相同的元件,否則處理程式通常不會針對相同名稱呼叫一次以上。 即使在這種情況中,一個結果仍會獲勝,並以不可部分完成的方式系結至名稱。
會 MetadataLoadContext 刻意在傳回的元件上執行 ref-def 比對,因為構成 ref-def 比對的內容是原則。 這也是想要避免的任意限制 MetadataLoadContext 類型。
MetadataLoadContext無法從其他元數據載入內容或其他類型提供者取用元件 (,例如基礎運行時間本身的反映系統) 。 如果處理程式傳回這類元件,則會 MetadataLoadContext 擲回 FileLoadException。