Skip to content

Instantly share code, notes, and snippets.

@dstarr
Created November 25, 2022 20:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dstarr/7e737572e2a4be5ba679bc0fc7b3b7cb to your computer and use it in GitHub Desktop.
Save dstarr/7e737572e2a4be5ba679bc0fc7b3b7cb to your computer and use it in GitHub Desktop.
IServiceProvider Constructor injection
public ActionResult Index(string[] array)
{
int[] result = [0];
using (var scope = _serviceProvider.CreateScope())
{
var service = scope.GetService<IArrayReversalService>();
result = await service.Reverse(array);
}
return View(result);
}
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly IArrayReversalService _arrayReversalService;
// more fields for injected services
public HomeController(ILogger<HomeController> _logger, IArrayReversalService _arrayReversalService, ... more services)
{
_arrayReversalService = serviceProvider.GetService<IArrayReversalService>();
_logger = serviceProvider.GetService<ILogger<HomeController>>();
// More services assigned
}
}
private readonly IServiceProvider _serviceProvider;
public HomeController(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
// uses the same syntax to add the service in Program.cs
builder.Services.AddTransient<IArrayReversalService, ArrayReversalService>();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment