在UWP和WPF中,AddScoped方法用于向依赖注入容器中添加只在请求范围内生命周期的服务。这意味着每个请求将会得到同一个实例,而在不同的请求之间,实例将不一样。
在UWP或WPF应用程序的Startup类中,我们可以使用以下代码将AddScoped方法添加到依赖注入容器中:
// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped();
}
在上面的示例中,IMyScopedService是服务的接口,MyScopedService是服务的实现类。
使用AddScoped注入的服务将在请求范围内进行生命周期管理,而不是在整个应用程序范围内。这对于需要在请求处理期间共享状态的服务尤其有用。
下面是一个简单的示例:
// MyController.cs
public class MyController : Controller
{
private readonly IMyScopedService _myScopedService;
public MyController(IMyScopedService myScopedService)
{
_myScopedService = myScopedService;
}
public IActionResult Index()
{
var result = _myScopedService.DoSomeWork();
return View(result);
}
}
// MyScopedService.cs
public class MyScopedService : IMyScopedService
{
public MyScopedService()
{
Debug.WriteLine("MyScopedService created");
}
public string DoSomeWork()
{
return "Scoped service working";
}
}
// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped();
}
// Index.cshtml
@Model
在上面的示例中,MyController依赖于IMyScopedService,它是用AddScoped方法注册的服务。访问Index页面时,将会创建一个MyScopedService实例,并使用它执行DoSomeWork方法。如果在同一请求范