運行時動態建立類別實例
只知道DLL名稱和類別名,無需在專案中新增組件引用,即可在執行時建立物件實例。此功能特別適用於插件系統或依賴注入等場景。
使用 Assembly.LoadFrom()
要將組件載入到記憶體中,請使用 Assembly.LoadFrom() 方法,並提供 DLL 檔案的路徑:
<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("library.dll");</code>
找 Type 物件
載入組件後,使用反射來定位特定類型:
<code class="language-csharp">Type type = assembly.GetType("Company.Project.Classname");</code>
建立實例
最後,使用 Activator.CreateInstance() 建立該類型的物件實例:
<code class="language-csharp">object instanceOfMyType = Activator.CreateInstance(type);</code>
處理未知 DLL 位置
如果您沒有 DLL 的絕對路徑,則可以依賴 .NET 類型解析機制:
<code class="language-csharp">object instanceOfMyType = Activator.CreateInstance("library.dll", "Company.Project.Classname");</code>
此方法將自動搜尋各種位置,包括應用程式根目錄、system32 和 GAC,以尋找組件並解析類型。
高級訂製
如有必要,您可以透過實作自訂的 DLL 搜尋機制來增強此解決方案,以便搜尋特定目錄中的 DLL。這在您儲存預設類型解析機制未搜尋的其他組件的場景中,將提供更大的靈活性。
以上是如何從組件和類型名稱動態實例化類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!