首先,在 Startup.cs
文件中配置你的服务。假设你有一个 MyService
类和一个 IMyService
接口:
public interface IMyService
{
void DoWork();
}
public class MyService : IMyService
{
public void DoWork()
{
// 实现你的逻辑
}
}
在 ConfigureServices
方法中注册这个服务:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddScoped<IMyService, MyService>();
}
假设你有一个类 MyClass
,你希望在这个类的内部创建一个依赖注入的作用域,并获取 IMyService
的实例:
public class MyClass
{
private readonly IServiceProvider _serviceProvider;
public MyClass(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public void MyMethod()
{
using (var scope = _serviceProvider.CreateScope())
{
var myService = scope.ServiceProvider.GetRequiredService<IMyService>();
myService.DoWork();
}
}
}
MyClass
你可以在控制器或其他服务中使用 MyClass
:
public class HomeController : Controller
{
private readonly MyClass _myClass;
public HomeController(MyClass myClass)
{
_myClass = myClass;
}
public IActionResult Index()
{
_myClass.MyMethod();
return View();
}
}
MyClass
确保在 Startup.cs
中注册 MyClass
:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddScoped<IMyService, MyService>();
services.AddTransient<MyClass>(); // 或者 AddScoped 或 AddSingleton,根据你的需求
}
相似问题