在運行時動態載入和實例化程序集類型
在某些情況下,您可能需要在執行時間實例化對象,而無法修改專案的組件參考。當您只知道所需類別的組件名稱和完全限定類型名稱時,就會發生這種情況。
方法:
為了克服這項挑戰,您可以使用.NET的反射和組件載入機制執行以下步驟:
Assembly.LoadFrom
方法將程式集載入到記憶體中。即使組件的絕對路徑未知,此方法也可以載入組件,使其適用於位於不同目錄或載入到全域組件快取 (GAC) 中的組件。 Type.GetType
方法從已載入的程式集中檢索類型元資料。此步驟需要提供完全限定類型名稱作為參數。 Type
物件呼叫Activator.CreateInstance
來實例化所需的型別。 以下是一個簡化的程式碼範例:
<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("MyCoolAssembly.dll"); Type myType = assembly.GetType("MyNamespace.MyType"); object myInstance = Activator.CreateInstance(myType);</code>
動態型別解析的替代方法:
如果您同時擁有組件檔案名稱和類型名稱,則可以使用Activator.CreateInstance(assemblyName, typeName)
方法。此方法允許.NET自動解析類型,無需手動反射。如果出現任何解析問題,您可以加入try/catch
區塊來搜尋特定組件目錄,或使用前面提到的Assembly.LoadFrom
方法嘗試手動載入。
透過使用這些技術,您可以靈活地在執行時間動態載入和實例化類型,即使您無法存取組件的實體位置或未在專案中直接引用它。
以上是如何從 .NET 中的組件名稱動態載入和實例化類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!