在运行时加载程序集并创建类实例,可以使用反射(Reflection)技术。反射是一种在运行时检查和操作程序集、类型、方法等元数据的技术。以下是一个简单的示例,说明如何在运行时加载程序集并创建类实例:
public interface IMyInterface
{
void PrintMessage();
}
public class MyClass : IMyInterface
{
public void PrintMessage()
{
Console.WriteLine("Hello, World!");
}
}
using System;
using System.Reflection;
namespace LoadAssemblyExample
{
class Program
{
static void Main(string[] args)
{
// 加载 DLL 文件
Assembly assembly = Assembly.LoadFrom("path/to/your/dll");
// 获取 MyClass 类型
Type myClassType = assembly.GetType("MyClass");
// 创建 MyClass 实例
object myClassInstance = Activator.CreateInstance(myClassType);
// 获取 IMyInterface 类型
Type myInterfaceType = assembly.GetType("IMyInterface");
// 将 MyClass 实例转换为 IMyInterface 类型
IMyInterface myInterfaceInstance = (IMyInterface)myClassInstance;
// 调用 PrintMessage 方法
myInterfaceInstance.PrintMessage();
}
}
}
在这个示例中,我们首先加载 DLL 文件,然后使用 Assembly.GetType()
方法获取 MyClass 类型和 IMyInterface 类型。接下来,我们使用 Activator.CreateInstance()
方法创建 MyClass 实例,并将其转换为 IMyInterface 类型。最后,我们调用 PrintMessage 方法输出 "Hello, World!"。
需要注意的是,反射技术可能会导致性能下降和安全风险。因此,在使用反射时,应该谨慎考虑。
领取专属 10元无门槛券
手把手带您无忧上云