首頁 > 後端開發 > C++ > 如何從組件和類型名稱動態實例化類別?

如何從組件和類型名稱動態實例化類別?

Mary-Kate Olsen
發布: 2025-01-19 09:07:13
原創
285 人瀏覽過

How Can I Instantiate a Class Dynamically from its Assembly and Type Name?

運行時動態建立類別實例

只知道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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板