C#動態載入DLL
在運行時載入和使用DLL是C#應用程式中的常見場景。這允許開發人員載入外部程式碼並擴展其程式的功能。
通常使用Assembly.LoadFile()
在運行時載入DLL。但是,僅僅載入DLL並不能立即存取其方法。這就是反射和動態物件的概念發揮作用的地方。
反射
反射涉及在運行時檢查和操作類型。它能夠存取在編譯時未知的成員並呼叫方法。在提供的範例中,您可以使用反射從載入的DLL呼叫「Output」方法:
<code class="language-csharp">foreach (Type type in DLL.GetExportedTypes()) { var c = Activator.CreateInstance(type); type.InvokeMember("Output", BindingFlags.InvokeMethod, null, c, new object[] {@"Hello"}); }</code>
動態 (.NET 4.0以上版本)
動態物件允許在動態存取成員和呼叫方法方面具有更大的靈活性。使用dynamic
關鍵字,您可以將載入類型的實例強制轉換為dynamic
並直接存取其成員:
<code class="language-csharp">foreach (Type type in DLL.GetExportedTypes()) { dynamic c = Activator.CreateInstance(type); c.Output(@"Hello"); }</code>
在這兩種情況下,程式碼都成功地在運行時從載入的DLL呼叫了「Output」方法,讓您在C#應用程式中存取其功能。
以上是如何在C#中動態載入和使用DLL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!