經常會出現開發人員必須動態載入組件、建立類別實例並執行特定方法的情況。 一個主要的例子是控制台應用程式需要載入 DLL、實例化 TestRunner
類別並呼叫其 Run()
方法。
傳統方法
典型的方法是使用 Assembly.LoadFile()
載入組件和反射來存取和呼叫 Run()
類別的 TestRunner
方法。 然而,這需要將實例化物件轉換為特定類型(例如,IRunnable
)。在處理動態產生的組件時,這可能會出現問題。
改良的解決方案:利用 AppDomains
AppDomains 是個更優秀、更適應的解決方案。此技術為動態載入的組件建立單獨的 AppDomain,從而提高隔離性和安全性。修改後的程式碼說明了這一點:
<code class="language-csharp">var domain = AppDomain.CreateDomain("NewDomainName"); var t = typeof(TestRunner); var runnable = domain.CreateInstanceFromAndUnwrap("C:\myDll.dll", t.Name) as IRunnable; if (runnable == null) throw new Exception("broke"); runnable.Run();</code>
使用 AppDomain 的優點
此方法有幾個主要優點:
總結
使用 AppDomains 提供了一種更安全、更靈活的方法來動態載入組件、建立類別實例和執行方法。 這種增強的控制在處理動態程式碼執行時特別有價值。
以上是AppDomains 如何改進動態組件載入和呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!