<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • C#控制臺(tái)程序中怎么實(shí)現(xiàn)用官方依賴注入

            這篇文章主要介紹“C#控制臺(tái)程序中怎么實(shí)現(xiàn)用官方依賴注入”,在日常操作中,相信很多人在C#控制臺(tái)程序中怎么實(shí)現(xiàn)用官方依賴注入問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C#控制臺(tái)程序中怎么實(shí)現(xiàn)用官方依賴注入”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

            創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比三明網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式三明網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋三明地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

            asp.net core 中已經(jīng)自帶了一個(gè)官方的依賴注入框架,現(xiàn)在想把它應(yīng)用到控制臺(tái)程序中,控制臺(tái)程序是最簡(jiǎn)潔的代碼結(jié)構(gòu),摒除了其他一堆嵌入的框架代碼,只包含最簡(jiǎn)潔的入口函數(shù),是學(xué)習(xí)基礎(chǔ)類庫(kù)框架的最佳選擇,為什么最佳,原因很簡(jiǎn)單,沒(méi)有其他項(xiàng)的干擾,Demo效果清晰明了,方便寫(xiě)測(cè)試代碼,調(diào)試也順暢。

            1. 業(yè)務(wù)接口類設(shè)計(jì)編寫(xiě)

            先要寫(xiě)一個(gè)測(cè)試用的接口和類,我寫(xiě)了一個(gè)很簡(jiǎn)單的計(jì)算求和的接口類和方法,方便待會(huì)注入演示效果。
            我設(shè)計(jì)的演示接口很簡(jiǎn)單,IBaseService 基礎(chǔ)接口負(fù)責(zé)生成一個(gè)隨機(jī)的數(shù)字,這個(gè)數(shù)字在構(gòu)造函數(shù)中生成,方便待會(huì)測(cè)試注入實(shí)例的生存周期,這樣設(shè)計(jì)的目的是,每回實(shí)例化都要調(diào)用構(gòu)造方法,而每次執(zhí)行構(gòu)造方法產(chǎn)生的隨機(jī)數(shù)是不一樣的,由此驗(yàn)證注入的生命周期,ICalculateService 接口則負(fù)責(zé)計(jì)算求和,就是將隨機(jī)數(shù)重復(fù)相加n遍,屏幕打印結(jié)果。

            /// <summary>
            /// 基礎(chǔ)服務(wù)接口,用來(lái)獲取一個(gè)數(shù)字
            /// </summary>
            public interface IBaseService
            {
            	/// <summary>
            	/// 數(shù)字屬性
            	/// </summary>
            	int Number { get; }
            	/// <summary>
            	/// 獲取數(shù)字方法
            	/// </summary>
            	/// <returns>隨機(jī)數(shù)</returns>
            	int GetNumber();
            }
            
            /// <summary>
            /// 計(jì)算服務(wù)接口,用來(lái)求和累加運(yùn)算
            /// </summary>
            public interface ICalculateService
            {
            	/// <summary>
            	/// 求和方法
            	/// </summary>
            	/// <param name="count"></param>
            	void Sum(int count);
            }
            
            /// <summary>
            /// 計(jì)算服務(wù)
            /// </summary>
            public class CalculateService : ICalculateService
            {
            	private readonly IBaseService _baseService;
            	public CalculateService(IBaseService baseService)
            	{
            		_baseService = baseService;
            	}
            	public void Sum(int n)
            	{
            		int sum = 0;
            		for (int i = 0; i < n; i++)
            		{
            			sum+= _baseService.Number;
            		}
            		Console.WriteLine($"the result of ICalculateService is { sum }");
            	}
            }
            
            /// <summary>
            /// 基礎(chǔ)服務(wù)
            /// </summary>
            public class BaseService : IBaseService
            {
            	public int Number { get; }
            	public BaseService()
            	{
            		Number = GetNumber();
            		Console.WriteLine($"the Number is {Number}");
            	}
            	public int GetNumber()
            	{
            		Random rand = new Random();
            		return rand.Next(1, 1000);
            	}
            }

            2. 依賴注入使用

            注入操作也和在Asp.net core中雷同,先new一個(gè)ServiceCollection,然后添加注入的所需的接口或類及范圍,
            之所以要for循環(huán)3次,是為了驗(yàn)證生命周期,和方便觀察調(diào)用構(gòu)造函數(shù)的次數(shù)。IBaseService接口的注入實(shí)例生命周期設(shè)置為T(mén)ransient,即每次調(diào)用都會(huì)實(shí)例化一次從而產(chǎn)生新的隨機(jī)數(shù),而ICalculateService則采用單例模式,所以它的構(gòu)造方法只被調(diào)用了一次,在控制臺(tái)運(yùn)行時(shí),會(huì)在屏幕上打印結(jié)果,清晰可辨。

            static void Main(string[] args)
            {
            	var serviceProvider = new ServiceCollection()
            	  .AddTransient<IBaseService, BaseService>()
            	  .AddScoped<ICalculateService, CalculateService>()
            	  //.AddSingleton<ICalculateService, CalculateService>()
            	  //.AddTransient<ICalculateService, CalculateService>()
            	  .BuildServiceProvider();
            
            	for (int i = 0; i < 3; i++)
            	{
            		var calculateService = serviceProvider.GetService<ICalculateService>();
            		calculateService.Sum(10);
            	}
            
            	var baseService = serviceProvider.GetService<IBaseService>();
            	for (int i = 0; i < 3; i++)
            	{
            		int resultNum = baseService.GetNumber();
            		Console.WriteLine($"the result of IBaseService is {resultNum}");
            	}
            	Console.ReadKey();
            }

            3. 執(zhí)行結(jié)果分析

            C#控制臺(tái)程序中怎么實(shí)現(xiàn)用官方依賴注入

            我們可以看到ICalculateService接口的實(shí)例確實(shí)是單例,因?yàn)闃?gòu)造函數(shù)只被調(diào)用了一次,隨機(jī)產(chǎn)生的數(shù)字也沒(méi)變,接著我們會(huì)把ICalculateService的注入生命周期改成Transient 瞬態(tài),看看會(huì)有什么變化。

            C#控制臺(tái)程序中怎么實(shí)現(xiàn)用官方依賴注入

            很顯然,它執(zhí)行了五次構(gòu)造方法,也就是實(shí)例化了五次,所以每回產(chǎn)生的隨機(jī)數(shù)也不一樣了。

            到此,關(guān)于“C#控制臺(tái)程序中怎么實(shí)現(xiàn)用官方依賴注入”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

            本文題目:C#控制臺(tái)程序中怎么實(shí)現(xiàn)用官方依賴注入
            URL地址:http://www.jbt999.com/article18/jsdgdp.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、定制開(kāi)發(fā)品牌網(wǎng)站設(shè)計(jì)、關(guān)鍵詞優(yōu)化、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

            網(wǎng)站托管運(yùn)營(yíng)

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 黄片视频免费在线观看 | 亚洲黄色小电影 | 大屌插逼 | 人人摸人人色 | 91三级电影 |