内置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两个实例被自动创建
标签:builder,Business,ServiceCollection,IMicrophone,public,Services,net,core6,app 来源: https://www.cnblogs.com/handsomeziff/p/16296221.html