C# 如何通过接口反射创建类的实例
时间: 2024-09-07 21:02:59 浏览: 114
在C#中,可以通过反射(Reflection)机制,利用接口类型创建一个类的实例。以下是一个基本步骤的概述:
1. 获取接口类型:首先,你需要获取你要实现的接口的`Type`对象。这可以通过`typeof`关键字直接获取,或者通过`Type.GetType`方法根据类型名称获取。
2. 获取实现类:接着,你需要找到一个实现了该接口的类的`Type`对象。这通常通过`Assembly`对象来完成,可以通过`Assembly.GetExecutingAssembly()`或`Assembly.Load`等方法获取程序集,然后使用`GetTypes`方法获取所有类型,再筛选出实现了特定接口的类型。
3. 创建实例:使用`Activator.CreateInstance`方法根据类的`Type`对象创建实例。这个方法会返回一个`object`类型的实例。
下面是一个简单的代码示例:
```csharp
using System;
using System.Reflection;
public interface IMyInterface
{
void MyMethod();
}
public class MyClass : IMyInterface
{
public void MyMethod()
{
Console.WriteLine("MyClass 实现了 IMyInterface 接口");
}
}
class Program
{
static void Main()
{
// 获取接口的 Type 对象
Type interfaceType = typeof(IMyInterface);
// 获取程序集中的所有类型并筛选出实现了接口的类的 Type 对象
Type implementingType = typeof(MyClass); // 这里假设我们已经知道了实现类
// 使用 Activator 创建类的实例
IMyInterface myInterfaceInstance = (IMyInterface)Activator.CreateInstance(implementingType);
// 调用接口的方法
myInterfaceInstance.MyMethod();
}
}
```
在这个例子中,我们首先定义了一个接口`IMyInterface`和一个实现了该接口的类`MyClass`。在`Main`方法中,我们通过接口类型获取实现了该接口的类的类型,并使用`Activator.CreateInstance`方法创建了一个类的实例。
阅读全文
相关推荐


















