<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      前面幾篇文章只是初步搭建項目結構,那到底能否運行呢?(能是肯定的啦)

      畢竟咱都NetCore了,所以依賴注入要搞起來。專業的解釋我就不多說了,很多博客文章說的很詳細(其實是我忘了那些術語怎么講)。

      按照我的理解來說的話就是:

      省的你自己手動new了,假如你要更改接口,那不就要每個new的地方都改一下?

      松耦合,可重用,易維護。簡單舉例來說:我通過構造函數注入的是接口類,不直接依賴實現,所以你可以很方便的去更換實現,這不就松耦合了嗎?可重用這個看個人需求吧,因為解耦彼此都是模塊化的,獨立的,所以可重用,維護也較為簡單,對整個項目影響較小。

      倉儲模式本身的目的就是為了解耦合,模塊化。

      回想一下項目之間的彼此依賴關系:

      1 倉儲接口層定義接口類,倉儲實現層引用倉儲接口層實現具體內容。主要用于和數據庫打交道。

      2.1 服務接口層引用倉儲接口層,主要用于調用倉儲層對數據庫進行交互。

      2.2 服務接口層定義接口類,服務實現層引用服務接口層實現具體實現。主要處理業務邏輯。

      3.1 API程序層引用服務接口層,接收前端的請求,主要調用服務層進行業務邏輯處理。

      基本上就是這么一個流程。他們彼此之間是有直接或間接的依賴關系的。這些可能無法完全解耦……但實現層并未進行直接依賴,所以耦合性體現在這里~

      回到文章一開始所說的:Autofac依賴注入!因為實現層還沒有實際的包含進項目,所以我的做法是通過DLL程序集反射進行整個實現層的注入。還可以多個實現層注入,但是這點我沒操作過,所以暫時就不說了,只是告訴你們這個可以做到~


       這里我新建了一個類庫:FastEasy.Common (公共類庫) 

      主要就是添加一些多個地方會用到的東西,但是即便你不用也不影響的一些東西,比如這個autofac,微軟也有自帶的依賴注入可以選擇,再比如日志,這個可選擇的更多了,Nlog,Log4,serilog等等。我將這些搞到公共類庫中,可以根據自己選擇來使用,個人覺得比較方便一些~

      本身我之前寫過Autofac的教程,所以可能接下來會復制一些之前的……

      1. 引入Autofac包:Autofac.Extensions.DependencyInjection  包含了Autofac。

      2. 在Common公共類庫添加Autofac相關的類,例如上面的截圖,一眼就看出來這個是autofac相關的東西~
      3. 打開新建的AutofaModule類,繼承Autofac的Module,敲override,重新antofac的Load加載方法~我直接貼代碼了,代碼有注釋~~~
                protected override void Load(ContainerBuilder builder)
                {
                    //程序集目錄
                    var basePath = AppDomain.CurrentDomain.BaseDirectory;
        
                    //倉儲層服務層程序集路徑
                    var repositoryPath = Path.Combine(basePath, "FastEasy.Repository.dll");
                    var servicePath = Path.Combine(basePath, "FastEasy.Service.dll");
        
                    //加載程序集
                    var repository = Assembly.LoadFrom(repositoryPath);
                    var service = Assembly.LoadFrom(servicePath);
        
                    //注入程序集
                    builder.RegisterAssemblyTypes(repository, service)
                        .AsImplementedInterfaces();
                } 
      4. 修改程序默認的容器工廠。用Autofac覆蓋它!Programs中配置
                builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());//覆蓋默認的容器工廠。
                builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
                {
                    builder.RegisterModule(new AutofacModule());
                });
      5. 最后一步可做可不做的操作:前面說過了,實現層沒有直接引用,所以生成解決方案的時候是不包含倉儲實現層和服務實現層的。這里有兩個操作。
        1. 第一個不用寫代碼,就是生成的時候把這兩個dll丟到api下的bin文件夾里。
        2. 第二張需要稍微配置一下實現層的 =》屬性>生成>輸出>輸出的基路徑:    ..\FastEasyAPI\bin\

       到這里就結束了,需要注意的點就是,如果修改了實現層,需要單獨生成一下實現層,將其生成到發布路徑下。


       

       測試效果:我添加了一個測試用的Test控制器,包括其相應的倉儲類服務類,并新增加減乘除接口。代碼就不粘貼了,都是基礎……就看一下接口的返回效果就好,看是否可以調用到倉儲層返回結果

       

       掰掰~

       

      posted on 2023-09-21 21:55  嘗嘗手指  閱讀(733)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 四虎影视www在线播放| 亚洲欧洲日产国产 最新| 国产自拍偷拍视频在线观看| 四虎永久免费很黄的视频| 亚洲www永久成人网站| 中文字幕乱码在线播放| 亚洲人妻精品中文字幕| 国产AV无码专区亚洲AV漫画| 亚洲人成网站在线播放2019| 久久久精品2019中文字幕之3| 无码熟妇人妻AV在线影片最多| 区。| 99精品久久毛片a片| 国产精品多p对白交换绿帽| 疯狂三人交性欧美| 精品少妇后入一区二区三区| 国产日韩一区二区天美麻豆 | 欧美做受视频播放| 日韩人妻无码精品久久| 亚洲中文字幕无码中字| 国产亚洲人成网站在线观看| 亚洲日韩久热中文字幕| 鲜嫩高中生无套进入| 无码一区中文字幕| 亚洲一区二区日韩综合久久| 国产免费毛卡片| 亚洲精品美女一区二区| 亚洲欧美在线一区中文字幕| 日日噜噜大屁股熟妇| 亚洲午夜无码久久久久蜜臀AV | 超碰伊人久久大香线蕉综合| 内射干少妇亚洲69XXX| 国产一区二区三区九九视频| 激情在线网| 精品 无码 国产观看| 亚洲国产成人自拍视频网| 性欧美三级在线观看| 国产一区二区在线影院| 久久精品视频这里有精品| a级免费视频| 亚日韩精品一区二区三区|