C#如何遍历所有类型,如何符合就new呢
时间: 2024-10-06 17:01:43 浏览: 35
在C#中,如果你想遍历所有类型并创建它们的实例(如果条件允许),通常会结合反射API和泛型来实现。以下是一个示例,它遍历指定程序集下的所有类型,并检查是否实现了某个接口或满足某些条件才创建实例:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
interface IExampleInterface
{
void ExampleMethod();
}
class MyClass : IExampleInterface
{
public void ExampleMethod()
{
Console.WriteLine("This is an example method.");
}
}
static class TypeScanner
{
public static void ScanAndCreateInstances<T>(Assembly assembly) where T : class
{
var types = assembly.GetTypes().Where(t => t.IsClass && !t.IsAbstract); // 只取类,并排除抽象类
foreach (var type in types)
{
if (typeof(IExampleInterface).IsAssignableFrom(type)) // 检查是否实现了接口
{
object instance = Activator.CreateInstance(type);
((IExampleInterface)instance).ExampleMethod(); // 调用接口方法
}
}
}
}
// 使用示例
void Main()
{
TypeScanner.ScanAndCreateInstances<MyClass>(Assembly.GetExecutingAssembly());
}
阅读全文