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中文网其他相关文章!