国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何在 ASP.Net Core 中使用 Lamar

開(kāi)發(fā) 前端
Lamar 是一個(gè)流行的,高效的,模塊化的 IOC 容器,這篇文章我們將會(huì)討論如何在 ASP.Net Core 中使用 Lamar。

[[386528]]

本文轉(zhuǎn)載自微信公眾號(hào)「碼農(nóng)讀書(shū)」,作者碼農(nóng)讀書(shū)。轉(zhuǎn)載本文請(qǐng)聯(lián)系碼農(nóng)讀書(shū)公眾號(hào)。

ASP.Net Core 自帶了一個(gè)極簡(jiǎn)的 開(kāi)箱即用 的依賴注入容器,實(shí)際上,你還可以使用第三方的 依賴注入容器 來(lái)替代它,依賴注入是一種設(shè)計(jì)模式,它能夠有效的實(shí)現(xiàn)對(duì)象之間的解耦并有利于提高單元測(cè)試和維護(hù)性,你可以使用 依賴注入 來(lái)改進(jìn)你的代碼設(shè)計(jì),而不像原來(lái)那樣到處都是 new 對(duì)象。

Lamar 是一個(gè)流行的,高效的,模塊化的 IOC 容器,這篇文章我們將會(huì)討論如何在 ASP.Net Core 中使用 Lamar。

為什么要用 Lamar 實(shí)現(xiàn)依賴注入

要說(shuō) .NET 世界最早的依賴注入容器,當(dāng)屬 StructureMap,但 StructureMap 最大的缺點(diǎn)就是性能問(wèn)題,而本篇的 Lamar 則非常輕量級(jí),并提供了豐富的可供調(diào)用API,Lamar 和 StructureMap 非常類似,如果你以前 StructureMap 玩的溜的話,切到 Lamar 上是非常容易的。

安裝 Lamar

要想在 ASP.Net Core 中使用 Lamar,需要通過(guò) nuget 安裝如下兩個(gè)包。

  • Lamar
  • Lamar.Microsoft.DependencyInjection

你可以通過(guò)可視化界面 Manage NuGet Packages。

或者如下命令進(jìn)行安裝。

  1. Install-Package Lamar  
  2. Install-Package Lamar.Microsoft.DependencyInjection 

創(chuàng)建 IDBManager 和 DBManager

首先創(chuàng)建一個(gè) IDBManager 接口類,用于后續(xù)做依賴注入用,代碼定義如下:

  1. public interface IDBManager 
  2.    { 
  3.        void Initialize(); 
  4.        bool Save<T>(T obj); 
  5.    } 

接下來(lái)定義 DBManager 類并實(shí)現(xiàn)接口 IDBManager ,代碼定義如下:

  1. public class DBManager: IDBManager 
  2.     { 
  3.         public void Initialize() 
  4.         { 
  5.             //Write some initialization code here 
  6.         } 
  7.         public bool Save<T>(T obj) 
  8.         { 
  9.          //Write your code here 
  10.             return true
  11.         } 
  12.     } 

配置 Lamar

Lamar.Microsoft.DependencyInjection 包提供了一個(gè) UseLamar() 方法能夠?qū)?Lamar 引入到 ASP.Net Core 基礎(chǔ)架構(gòu)中,下面的代碼展示了如何去實(shí)現(xiàn)。

  1. public class Program 
  2.   { 
  3.       public static void Main(string[] args) 
  4.       { 
  5.           CreateHostBuilder(args).UseLamar().Build().Run(); 
  6.       } 
  7.  
  8.       public static IHostBuilder CreateHostBuilder(string[] args) => 
  9.           Host.CreateDefaultBuilder(args) 
  10.               .ConfigureWebHostDefaults(webBuilder => 
  11.               { 
  12.                   webBuilder.UseStartup<Startup>(); 
  13.               }); 
  14.   } 

配置 Lamar 容器

接下來(lái)可以在 ConfigureServices() 方法中配置 Container 容器,代碼如下:

  1. public void ConfigureServices(IServiceCollection services) 
  2.         { 
  3.             var container = new Container(x => 
  4.             { 
  5.                 x.AddTransient<IDBManager, DBManager>(); 
  6.             }); 
  7.  
  8.             services.AddControllersWithViews(); 
  9.         } 

值得注意的是 Lamar 擁有強(qiáng)大的 自動(dòng)裝配 能力,它可以搜索請(qǐng)求類型和所需類型的構(gòu)造函數(shù),并構(gòu)建其需要的實(shí)例,下面的代碼展示了如何通過(guò) ConfigureContainer() 方法去實(shí)現(xiàn),這里我將該方法放在 Startup 類中,完整代碼如下:

  1. public class Startup 
  2.     // This method gets called by the runtime. Use this method to add services to the container. 
  3.     public void ConfigureServices(IServiceCollection services) 
  4.     { 
  5.         var container = new Container(x => 
  6.         { 
  7.             x.AddTransient<IDBManager, DBManager>(); 
  8.         }); 
  9.  
  10.         services.AddControllersWithViews(); 
  11.     } 
  12.  
  13.     public void ConfigureContainer(ServiceRegistry services) 
  14.     { 
  15.         services.Scan(s => 
  16.         { 
  17.             s.TheCallingAssembly(); 
  18.             s.WithDefaultConventions(); 
  19.         }); 
  20.     } 

Controller 中注入 DBManager 實(shí)例

接下來(lái)就可以在 Controller 中通過(guò)依賴注入的方式獲取 DBManager 實(shí)例啦,實(shí)現(xiàn)代碼如下:

  1. public class HomeController : Controller 
  2.    { 
  3.        private readonly ILogger<HomeController> _logger; 
  4.        private IDBManager _dbManager; 
  5.  
  6.        public HomeController(ILogger<HomeController> logger, IDBManager dbManager) 
  7.        { 
  8.            _logger = logger; 
  9.            _dbManager = dbManager; 
  10.        } 
  11.  
  12.        public IActionResult Index() 
  13.        { 
  14.            return View(); 
  15.        } 
  16.    } 

ASP.Net Core 自帶的依賴注入容器放在 IOC 圈子里來(lái)說(shuō)那真是太弱了,太需要第三方來(lái)擴(kuò)充了, Lamar 就是這樣一款非常優(yōu)秀的 IOC 容器,也是 StructureMap 非常好的替代品。

 

譯文鏈接:https://www.infoworld.com/article/3339698/how-to-use-lamar-in-aspnet-core.html

 

責(zé)任編輯:武曉燕 來(lái)源: 碼農(nóng)讀書(shū)
相關(guān)推薦

2021-02-02 16:19:08

Serilog日志框架

2021-03-17 09:45:31

LazyCacheWindows

2021-02-06 21:40:13

SignalR通訊TypeScript

2021-02-28 20:56:37

NCache緩存框架

2021-01-28 22:39:35

LoggerMessa開(kāi)源框架

2021-02-03 13:35:25

ASPweb程序

2021-01-31 22:56:50

FromServiceASP

2021-01-07 07:39:07

工具接口 Swagger

2021-03-03 22:37:16

MediatR中介者模式

2021-02-07 17:29:04

監(jiān)視文件接口

2021-06-22 16:59:56

微軟.NETC# 軟件開(kāi)發(fā)

2021-04-12 07:03:10

輕量級(jí)模塊化框架

2021-01-26 14:57:00

中間件應(yīng)用模塊化

2021-01-04 05:44:54

框架日志

2022-08-01 08:00:00

開(kāi)發(fā)工具跟蹤偵聽(tīng)器

2017-10-20 08:52:11

內(nèi)存緩存并發(fā)模式Linux

2009-02-05 14:02:46

SmtpMail發(fā)送郵件ASP.NET

2021-04-14 07:35:12

Json格式化日期

2021-11-01 14:52:38

ElasticSear索引SQL

2009-03-30 10:34:03

ASP.NETMySQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩理论在线| 三区精品视频观看| 在线免费av网址| 国产精品国产亚洲精品看不卡| 成人免费在线观看网站| 狠狠色一日本高清视频| 欧美激情喷水| 久久久久久久综合色一本| 精品网站999www| 日本fc2在线观看| a在线播放不卡| 免费97视频在线精品国自产拍| 国产精品第3页| 欧美日韩激情电影| 欧美亚洲一区三区| 欧美成人福利在线观看| 日韩精品一级二级| 成人免费看片网址| 欧美日韩性在线观看| av在线官网| 久久精品亚洲国产奇米99| 国产国语videosex另类| 永久免费av片在线观看全网站| 在线成人视屏| 国产精品的网站| wwwxx欧美| 神马亚洲视频| 国产一区精品二区| 99香蕉国产精品偷在线观看 | 亚洲精品麻豆| 欧美日本高清视频在线观看| 92国产精品久久久久首页| 在线麻豆国产传媒1国产免费| 国产日韩成人精品| 免费在线观看一区二区| 大地资源中文在线观看免费版| 国产亚洲综合色| 亚洲欧美国产另类| 国产suv精品一区二区三区 | 精品美女被调教视频大全网站| 国产精品永久免费观看| 在线观看你懂得| 一区二区日韩欧美| 日韩在线观看精品| 在线成年人视频| 欧美日韩精品一区二区三区在线观看| 精品久久久一区二区| 欧美亚洲视频一区| 欧美一区久久| 成人在线精品视频| 国内精品福利| 天天色综合6| 一本大道久久精品懂色aⅴ| 国产精品久久久久av免费| 亚洲五码在线| 久久久久久久久久久久av| caoporn成人免费视频在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产福利亚洲| 欧美精品xxx| 亚洲色图美女| 国产成人av一区二区三区| 国产精品呻吟| 97久久国产亚洲精品超碰热| 久久久亚洲精品一区二区三区| wwwcom羞羞网站| 狠狠色香婷婷久久亚洲精品| 天天影视久久综合| 都市激情综合| 日韩视频免费观看高清在线视频| 在线观看精品视频| 99精品免费| 91看片淫黄大片91| 亚洲美女av网站| 99re久久| 午夜精品一区二区三区在线视频| 中文无码日韩欧| 日韩av免费在线播放| 欧美理论在线| 亚洲精品成a人ⅴ香蕉片| 亚洲va男人天堂| 色综合久久天天| 免费在线中文字幕| 夜夜躁日日躁狠狠久久88av| 99国内精品久久久久| 色偷偷av一区二区三区乱| 日韩电影二区| 男人天堂999| 亚洲男女一区二区三区| 日韩精品久久一区二区| 韩日视频一区| 国产玉足脚交久久欧美| 色噜噜狠狠色综合中国| 亚洲乱码国产乱码精品天美传媒| 国产精品自拍网站| 国产视频一二区| 91.com在线观看| 亚洲天堂av资源在线观看| 91亚洲一区精品| av不卡一区二区三区| 911国产精品| 亚洲人成小说网站色在线 | 午夜欧美一区二区三区在线播放| 国产夫妻在线播放| 精品一区二区三区在线观看国产| 国产精品91xxx| 性生大片免费观看性| 亚洲日本在线a| 精品午夜电影| 欧美成人精品激情在线观看 | 国产高清成人在线| 久久精品免费网站| 欧美日韩一级二级| 卡一精品卡二卡三网站乱码| 久久人人爽爽人人爽人人片av| 久久影院午夜论| 黄色精品在线观看| 国产91色在线播放| 国产福利不卡视频| av在线天堂| 国产精品va在线播放我和闺蜜| 国产精品 欧美精品| av在线女优影院| 国产精品户外野外| 久久免费视频色| 一区二区三区短视频| 不卡视频一区二区三区| 国产精品久久久久久久午夜片| 在线观看爽视频| 国产精品18毛片一区二区| 国产精品欧美一区二区三区| 日本小视频在线免费观看| 成人激情av在线| 国产精品白丝在线| 国产精品亚洲四区在线观看 | 麻豆传媒视频在线观看| 日韩视频免费在线| 第一会所亚洲原创| 青青青在线观看视频| 亚洲国产sm捆绑调教视频| 国产精品97| 中日韩在线视频| 夜色激情一区二区| 成人午夜在线免费| 国产精品99一区二区三| 老牛影视av一区二区在线观看| av在线日韩| 在线黄色国产电影| 99国产超薄肉色丝袜交足的后果| 在线免费观看成人短视频| 三级欧美在线一区| 欧美a在线观看| 97超碰在线免费| 日日噜噜夜夜狠狠| 蜜桃av色综合| 欧美亚洲国产另类| 日韩视频免费中文字幕| 日韩中文字幕在线视频| 亚洲小说欧美另类社区| 轻轻色免费在线视频| 久久亚洲精品毛片| 成人黄色国产精品网站大全在线免费观看 | 日产精品一区二区| 69久久久久久| 热草久综合在线| 一区二区激情视频| 精品高清在线| 亚洲sss视频| 69堂成人精品视频免费| 91久久精品一区二区三| 亚洲另类视频| 波多野结衣中文在线| 潘金莲一级淫片aaaaa免费看| 日韩av网站导航| 91偷拍与自偷拍精品| 日本成人中文| 做爰高潮hd色即是空| 欧美国产视频在线观看| 亚洲人成77777| 国产精品美女免费视频| 91福利视频久久久久| 91在线云播放| 91精品国产乱码久久久竹菊| 国产黄视频网站| 国产精品一色哟哟| 日韩一区不卡| 久久精品视频一区二区三区| 欧美卡一卡二| 天堂资源在线中文| 日韩影片在线观看| 午夜精品在线| 美女av一区| 色综合一区二区日本韩国亚洲| 久久伦理中文字幕| 免费观看在线一区二区三区| freexxx性亚洲精品| 69日本xxxxxxxxx49| 国产精品小说在线| 国产成人在线一区二区| 欧美精品在线视频观看|