Asp.Net.Core5 IOC依賴注入


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();
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM