在C#开发中,有时我们并不希望在程序启动时就加载所有依赖的程序集(DLL文件),而是希望在需要时才动态加载。这种技术被称为程序集的延迟加载(Lazy Loading of Assemblies)。它不仅可以减少程序启动时间,还能节省内存资源,并支持插件式架构设计。
Assembly.LoadFrom 是 .NET 提供的一个静态方法,用于从指定路径动态加载程序集。与 Assembly.Load 不同,LoadFrom 接受的是文件路径(如 "C:\Plugins\MyPlugin.dll"),而不是程序集的全名。
使用 LoadFrom 可以在运行时根据条件加载不同的 DLL,非常适合实现插件系统、模块化应用或按需功能扩展。
Assembly.LoadFrom 加载该 DLL假设我们有一个名为 Calculator.dll 的程序集,其中包含一个 Adder 类:
// Calculator.dll 中的代码namespace CalculatorLib{ public class Adder { public int Add(int a, int b) { return a + b; } }} 现在,我们在主程序中动态加载这个 DLL 并调用 Add 方法:
using System;using System.Reflection;class Program{ static void Main() { try { // 使用 LoadFrom 动态加载程序集 Assembly assembly = Assembly.LoadFrom(@"C:\MyApp\Plugins\Calculator.dll"); // 获取 Adder 类型 Type adderType = assembly.GetType("CalculatorLib.Adder"); // 创建实例 object adderInstance = Activator.CreateInstance(adderType); // 调用 Add 方法 MethodInfo addMethod = adderType.GetMethod("Add"); object result = addMethod.Invoke(adderInstance, new object[] { 10, 20 }); Console.WriteLine($"计算结果: {result}"); // 输出: 计算结果: 30 } catch (Exception ex) { Console.WriteLine($"加载失败: {ex.Message}"); } }} LoadFrom 的路径是正确的绝对路径或相对路径。try-catch 捕获异常。LoadFrom 通常不会重复加载,但不同路径指向同一 DLL 可能导致多个副本被加载。本文详细介绍了 C#程序集延迟加载 的实现方式,重点讲解了 Assembly.LoadFrom 的使用方法,并结合实际代码演示了如何实现 动态加载DLL。这一技术是 C#反射机制 的典型应用场景,适用于插件系统、模块化开发等高级架构设计。
掌握这些知识,你就能灵活控制程序集的加载时机,提升应用程序的性能与可维护性。
本文由主机测评网于2025-12-18发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025129582.html