内置IOC容器ServiceCollection在.net core6中的使用

.net core6内置了IOC容器ServiceCollection可以直接使用

1、创建IMicrophone接口

1 namespace Business.IServices
2 {
3     public interface IMicrophone
4     {
5        
6     }
7 }

2、创建Microphone类

复制代码
using Business.IServices;

namespace Business.Services
{
    public class Microphone : IMicrophone
    {
        public Microphone()
        {
            Console.WriteLine($"{this.GetType().Name}被构造..");
        }
    }
}
复制代码

3、创建HomeController类

复制代码
using Business.IServices;
using Microsoft.AspNetCore.Mvc;

namespace ProjectIOC.Controllers
{
    public class HomeController : Controller
    {
        private readonly IMicrophone _microphone;
        private readonly IMicrophone _microphone2;

        public HomeController(IMicrophone microphone,IServiceProvider serviceProvider)
        {
            this._microphone = microphone;
            this._microphone2 = serviceProvider.GetService<IMicrophone>();
        }

        public IActionResult Index()
        {
            return View();
        }
    }
}
复制代码

4、修改Program.cs类

复制代码
 1 using Business.IServices;
 2 using Business.Services;
 3 
 4 var builder = WebApplication.CreateBuilder(args);
 5 
 6 // Add services to the container.
 7 //builder.Services.AddRazorPages();
 8 builder.Services.AddControllersWithViews();
 9 #region 注册服务,抽象与具体
10 {
11     builder.Services.AddTransient<IMicrophone, Microphone>();
12     builder.Services.AddTransient<IPower, Power>(); 
13 }
14 #endregion
15 var app = builder.Build();
16 
17 // Configure the HTTP request pipeline.
18 if (!app.Environment.IsDevelopment())
19 {
20     app.UseExceptionHandler("/Error");
21 }
22 app.UseStaticFiles();
23 
24 app.UseRouting();
25 
26 app.UseAuthorization();
27 
28 //app.MapRazorPages();
29 app.MapControllerRoute(
30     name: "default",
31     pattern: "{controller=Home}/{action=Index}/{id?}"
32     );
33 app.Run();
复制代码

 

5、设置断点,启动程序

可以发现在HomeController构造函数里面,_microphone,_microphone2两个实例被自动创建

 

posted @   ziff123  阅读(476)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示