我在阅读这个网址上有关ASP.Net MVC 6轻松进行依赖注入的文章:http://weblogs.asp.net/scottgu/introducing-asp-net-5。
他们展示了如何非常容易地将依赖注入到项目中。
他们展示了如何非常容易地将依赖注入到项目中。
namespace WebApplication1
{
public class TimeService
{
public TimeService()
{
Ticks = DateTime.Now.Ticks.ToString();
}
public String Ticks { get; set; }
}
}
register the time service as a transient service in the ConfigureServices method of the Startup class:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddTransient<TimeService>();
}
public class HomeController : Controller
{
public TimeService TimeService { get; set; }
public HomeController(TimeService timeService)
{
TimeService = timeService;
}
public IActionResult About()
{
ViewBag.Message = TimeService.Ticks + " From Controller";
System.Threading.Thread.Sleep(1);
return View();
}
}
第二个
public class HomeController : Controller
{
[Activate]
public TimeService TimeService { get; set; }
}
现在看一下第二段代码,他们是不是想说如果我们使用[Activate]
属性,那么我们就不需要通过控制器构造函数注入来实例化TimeService
了?
请告诉我如果我们使用[Activate]
属性,那么有什么优势?
如果我们使用[Activate]
属性,那么第一段相同代码中可以省略哪些行代码。谢谢
ActionContext
、HttpContext
、HttpRequest
、HttpResponse
、ViewDataDictionary
和ActionBindingContext
。当您不再从Controller
类继承并使用 poco 控制器时,这些变得更加有价值。 - N. Taylor Mullen