下面介绍两种方式:
1.构造函数注入
服务作为构造函数参数添加,并且运行时从服务容器中解析服务。 通常使用接口来定义服务。 例如,考虑需要当前时间的应用。 以下接口公开 IDateTime 服务:
public interface IDateTime
{
DateTime Now { get; }
}
以下代码实现IDateTime接口:
public class SystemDateTime : IDateTime
{
public DateTime Now
{
get { return DateTime.Now; }
}
}
将服务添加到服务容器中:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IDateTime, SystemDateTime>();
services.AddControllersWithViews();
}
以下代码根据一天中的时间向用户显示问候语:
public class HomeController : Controller
{
private readonly IDateTime _dateTime;
public HomeController(IDateTime dateTime)
{
_dateTime = dateTime;//构造函数注入
}
public IActionResult Index()
{
var serverTime = _dateTime.Now;
if (serverTime.Hour < 12)
{
ViewData["Message"] = "早上好!";
}
else if (serverTime.Hour < 17)
{
ViewData["Message"] = "下午好!";
}
else
{
ViewData["Message"] = "晚上好!";
}
return View();
}
}
2.在使用操作时注入(FromServices
)
public IActionResult About([FromServices] IDateTime dateTime)
{
return Content( $"当前时间: {dateTime.Now}");
}