// ASP.NET Core is responsible for making the controllers, // and for filling it its ctor parameters (dependency injection) public HelloWorldController(IRequestCounter counter) { // this is the opposite of dependency injection - instantiating our dependencies right here // "new is glue" - if your class says "new" in it, it's tightly coupled to some other class's // specific implementation. harder to unit test that code, harder to evolve it later. //_counter = new RequestCounter(); counter.IncrementRequestCount(); _counter = counter; }
// GET: /HelloWorld/Welcome?name=Mark public IActionResult Welcome(string name, [FromServices] IRequestCounter counter2) { // with FromServices attribute, you can get dependencies injected into specific action methods ViewData["Message"] = "Hello" + name; ViewData["NumTimes"] = _counter.TotalRequestCount; ViewData["NumTimes2"] = counter2.TotalRequestCount; return(View()); }
public ThreadMiddleware(RequestDelegate next, IRequestCounter counter, IConfiguration config) { _next = next; _counter = counter; _config = config; }