要获取所有实现接口的类并调用它们的方法,可以使用反射和依赖注入来实现。以下是一个示例代码:
首先,创建一个接口:
public interface IMyInterface
{
void MyMethod();
}
然后,创建两个实现该接口的类:
public class MyClass1 : IMyInterface
{
public void MyMethod()
{
Console.WriteLine("MyClass1 - MyMethod");
}
}
public class MyClass2 : IMyInterface
{
public void MyMethod()
{
Console.WriteLine("MyClass2 - MyMethod");
}
}
接下来,在 ASP .Net Core 的 Startup.cs 文件中注册接口和实现类:
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient();
services.AddTransient();
//其他配置...
}
最后,在需要获取和调用实现类的地方,使用依赖注入和反射来实现:
public class MyService
{
private readonly IEnumerable _myInterfaces;
public MyService(IEnumerable myInterfaces)
{
_myInterfaces = myInterfaces;
}
public void CallAllMethods()
{
foreach (var myInterface in _myInterfaces)
{
myInterface.MyMethod();
}
}
}
在上述示例中,MyService
类通过构造函数注入了所有实现 IMyInterface
接口的类,并提供了一个 CallAllMethods
方法来循环调用每个实现类的 MyMethod
方法。
通过依赖注入,我们可以在控制器或其他地方直接使用 MyService
类来调用所有实现类的方法:
public class MyController : ControllerBase
{
private readonly MyService _myService;
public MyController(MyService myService)
{
_myService = myService;
}
public IActionResult Index()
{
_myService.CallAllMethods();
return Ok();
}
}
上述代码示例中,当访问 Index
方法时,将调用 MyService
类的 CallAllMethods
方法,从而调用所有实现类的 MyMethod
方法。
上一篇:Asp .net core httpsys 异常 - 访问被拒绝
下一篇:ASP .NET Core Identity - Microsoft.AspNetCore.Identity.SignInManager: 警告: 用户未能提供正确的密码