首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在运行时加载程序集并创建类实例?

在运行时加载程序集并创建类实例,可以使用反射(Reflection)技术。反射是一种在运行时检查和操作程序集、类型、方法等元数据的技术。以下是一个简单的示例,说明如何在运行时加载程序集并创建类实例:

  1. 首先,创建一个类库项目,并添加一个类和接口:
代码语言:csharp
复制
public interface IMyInterface
{
    void PrintMessage();
}

public class MyClass : IMyInterface
{
    public void PrintMessage()
    {
        Console.WriteLine("Hello, World!");
    }
}
  1. 编译类库项目,生成 DLL 文件。
  2. 在另一个项目中,加载 DLL 文件并创建类实例:
代码语言:csharp
复制
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!"。

需要注意的是,反射技术可能会导致性能下降和安全风险。因此,在使用反射时,应该谨慎考虑。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券