📅  最后修改于: 2023-12-03 14:59:41.966000             🧑  作者: Mango
在 .NET 中,程序集是代码、资源和元数据的逻辑单元。编写程序时,常常需要动态加载程序集,以便在运行时获得更大的灵活性。在 C# 中,可以使用 Assembly
类动态加载程序集。
使用 Assembly.Load
方法可以通过程序集的名称或路径来加载程序集。例如,以下代码可以加载默认应用程序域中的程序集:
Assembly assembly = Assembly.Load("MyAssembly");
这将返回一个 Assembly
对象,代表了名为 MyAssembly 的程序集。如果需要加载指定路径下的程序集,可以使用以下代码:
Assembly assembly = Assembly.LoadFile(@"C:\MyDirectory\MyAssembly.dll");
这将返回一个 Assembly
对象,代表了 C:\MyDirectory 目录下的 MyAssembly.dll 文件。
在加载程序集之后,可以使用 Assembly
类提供的各种方法来获取类型信息。例如,以下代码可以获取 MyClass
类型的信息:
Type type = assembly.GetType("MyNamespace.MyClass");
这将返回一个 Type
对象,代表了 MyNamespace.MyClass
类型。如果需要获取程序集中的所有类型,可以使用以下代码:
Type[] types = assembly.GetTypes();
这将返回一个 Type
数组,其中包含了程序集中所有的公共类型。
在获取类型信息之后,可以使用反射来调用类的方法。例如,以下代码可以创建 MyClass
类的实例并调用其 MyMethod
方法:
object instance = Activator.CreateInstance(type);
MethodInfo method = type.GetMethod("MyMethod");
method.Invoke(instance, null);
这将创建一个 MyClass
实例,然后调用其 MyMethod
方法。
通过动态加载程序集,可以在运行时获得更大的灵活性。使用 Assembly
类可以方便地加载程序集,并通过反射来调用其中的方法。需要注意的是,动态加载程序集会带来额外的复杂性和开销,需要谨慎使用。