根据接口获取所有实现类
时间: 2023-08-04 17:05:54 浏览: 83
您可以使用反射来获取实现给定接口的所有类的列表。下面是一个示例:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
interface IMyInterface
{
void MyMethod();
}
class MyClass1 : IMyInterface
{
public void MyMethod()
{
Console.WriteLine("MyClass1.MyMethod()");
}
}
class MyClass2 : IMyInterface
{
public void MyMethod()
{
Console.WriteLine("MyClass2.MyMethod()");
}
}
class Program
{
static void Main(string[] args)
{
List<Type> types = Assembly.GetExecutingAssembly().GetTypes()
.Where(t => t.GetInterfaces().Contains(typeof(IMyInterface))).ToList();
foreach (Type type in types)
{
Console.WriteLine(type.Name);
}
}
}
```
在这个例子中,我们定义了一个接口 `IMyInterface` 和两个实现该接口的类 `MyClass1` 和 `MyClass2`。然后,我们使用反射来获取所有实现 `IMyInterface` 接口的类的列表,并将它们打印到控制台上。
注:需要引用 `System.Reflection` 命名空间。