vue/cli中css.sourceMap-open-inline-host-port-https-openPage-compress -devServer.proxy的簡單介紹
阿新 • • 發佈:2022-03-06
class Program { static void Main(string[] args) { //1 nuget 包Microsoft.Extensions.DependencyInjection //2 建立 ServiceColl ection //3 BuildServiceProvider ServiceCollection services = new ServiceCollection(); // services.AddSingleton<IService, ConcreteService>();
services.AddSingleton(typeof(IService), new ConcreteService());//這種可以實現帶引數的建構函式 using (var serviceBuild = services.BuildServiceProvider()) { var conCreteService = serviceBuild.GetService<IService>();//找不到 null
var conCreteService = serviceBuild.GetRequiredService<IService>();// 拋異常 conCreteService.Show(); } Console.WriteLine("Hello World!"); } } public interface IService { void Show(); } public class ConcreteService : IService { public void Show() { Console.WriteLine( "你哈"); } }
using Microsoft.Extensions.DependencyInjection;
在擴充套件包內的
----------------------------------------------------------------------------------------------------------------------
生命週期,
transient每次都不一樣
Singleton單列,以最後面的為準,最後面誰修改了屬性,前面的例項也會是這個屬性值。
scoped:範圍,一個using是一個範圍。
如何選擇:
如果類無狀態,沒有屬性,建議是singleTon;
如果類有狀態,且有scope控制,建議是scope.因為通常這個scope控制下的程式碼都是執行在一個執行緒內的沒有發生修改的問題。
在使用transient的要謹慎。
----------------------------------------------------------------------------------------------------------------------