Asp.Net.Core5
內置IOC容器
一,IServiceCollection 依賴注入
僅支持構造函數注入
1,在Startup.cs 中 ConfigureServices方法注入服務
services.AddTransient<Interfaces.IUser, Services.UserService>();
public void ConfigureServices(IServiceCollection services) { #region IOC 注冊抽象和具體的依賴關系 services.AddTransient<Interfaces.IUser, Services.UserService>(); #endregion services.AddRazorPages().AddRazorRuntimeCompilation(); services.AddSession();//注冊Session services.AddControllersWithViews(); }
2,設置私有變量,構造函數設置參數並將值賦值給私有變量
private readonly Interfaces.IUser userService = null; public UserController( Interfaces.IUser iUser ) { this.userService = iUser; }
3,調用方法
public IActionResult Index() { base.ViewBag.Name= userService.GetName(); return View(); }
4,在注冊服務后,視圖中通過關鍵字@inject 獲取實例
@using AspNetCore5Demo.Interfaces;
@inject IUser iuser
@{
iuser.GetName();
}
二,IServiceProvider 注入
1,構造函數中設置類型為 IServiceProvider 的參數,並賦值給(私有變量)
private readonly IServiceProvider service = null; public UserController( IServiceProvider serviceProvider ) { this.service = serviceProvider; }
2,創建對象,並調用方法
public IActionResult Index() { Interfaces.IUser user = (Interfaces.IUser)service.GetService(typeof(Interfaces.IUser)); user.GetName(); return View(); }