assembly.gettype 查找继承接口的类
时间: 2024-12-15 17:30:19 浏览: 4
在C#中,`Assembly.GetTypes()` 方法可以帮助查找特定命名空间或整个应用程序域中继承接口的类。这个方法返回一个 `Type[]` 数组,包含了所有指定条件下的类型信息。
以下是如何使用 `Assembly.GetTypes()` 结合接口查找的示例:
```csharp
// 假设我们有一个名为 "MyNamespace" 的命名空间,里面定义了一个接口 IMyInterface 和一些实现它的类
using System.Reflection;
// 定义接口
interface IMyInterface
{
void MyMethod();
}
// 获取当前程序集中的类型信息
Assembly assembly = Assembly.GetExecutingAssembly(); // 获取当前执行的程序集
// 过滤出实现了 IMyInterface 接口的类
List<Type> implementingTypes = assembly.GetTypes()
.Where(t => t.IsClass && t.GetInterfaces().Contains(typeof(IMyInterface)))
.ToList();
foreach (Type type in implementingTypes)
{
Console.WriteLine($"Found class '{type.FullName}' that implements IMyInterface.");
}
```
这段代码首先获取当前执行的程序集(`Assembly.GetExecutingAssembly()`),然后通过 `Where()` 函数筛选出那些既是类(`t.IsClass`)并且实现了 `IMyInterface` 接口的类型。最后,它会列出找到的所有这些类的全名。
阅读全文