日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core中使用IOC三部曲(三.采用替换后的Autofac来实现AOP拦截)

發布時間:2023/12/4 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core中使用IOC三部曲(三.采用替换后的Autofac来实现AOP拦截) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇ASP.NET Core中使用IOC三部曲(二.采用Autofac來替換IOC容器,并實現屬性注入)我們講了如何將默認的容器替換為Autofac,并使用屬性注入.那么這一篇我們就來講講如何利用Autofac實現我們的AOP(面向切面編程) .

1.引用正確的庫來實現AOP

既然是跨平臺,那么在asp.net core因為采用了.net core來作為基礎庫(當然,其實你可以換成.NET4.6.).

新的.NET Core是基于.NET Standard的..所以我們在引用庫的時候特別要注意相關的兼容問題.

在傳統的ASP.NET中,使用過Autofac來進行AOP操作的,應該都知道這個庫.

Autofac.Extras.DynamicProxy

那么我們來看看它的依賴項.如圖:

.NET Standard的情況下,他需要Autofac4.0+,這個就不多說了.關鍵在下面這個,他需要Castle.Core4.0+.

所以,當我們直接安裝這個庫的時候,Nuget會自動關聯并安裝最新的Castle.Core4.2.1版本..

那么問題就出現了..在項目的依賴項中,會發現很多警告:

?

我們進入警告會發現..都是提示缺少兼容的最新的類型轉換類.如圖:

而且Castle.Core是屬于AutoFac下面的..如圖:

我們直接通過Nuget查找Castle.Core.

可以發現,它需要System.ComponentModel.TypeConverter4.3..

我們直接安裝它,Nuget則會直接幫我們把System.ComponentModel.TypeConverter更新到4.3的版本..

然后重新通過Nuget安裝Autofac.Extras.DynamicProxy..就可以了.如圖:

?

其實這應該算一個Nuget的BUG..它會幫你引用庫的相關依賴..但是當依賴還有依賴需要更新的時候..它就不會更新..

這個時候我們換一種思維..返回來 一步步引用.就可以了..?

2.采用Autofac來實現AOP

首先,我們創建一個攔截類,代碼如下:

public class AOPTest : IInterceptor

? ? {

? ? ? ? public void Intercept(IInvocation invocation)

? ? ? ? {

? ? ? ? ? ? System.Diagnostics.Debug.WriteLine("你正在調用方法 \"{0}\"? 參數是 {1}... ",

? ? ? ? ? ? ? ?invocation.Method.Name,? ? ? ? ? ? ??

? ? ? ? ? ? ? ?string.Join(", ", invocation.Arguments.Select(a => (a ?? "").ToString()).ToArray()));

? ? ? ? ? ? //在被攔截的方法執行完畢后 繼續執行? ? ? ? ? ?

? ? ? ? ? ? invocation.Proceed();


? ? ? ? ? ? System.Diagnostics.Debug.WriteLine("方法執行完畢,返回結果:{0}", invocation.ReturnValue);

? ? ? ? }

? ? }

這里,需要繼承IInterceptor,然后實現它的Intercept方法..我們直接將攔截內容輸出到調試窗(正式項目..請根據業務來操作攔截)..

找到我們要攔截的服務.并設置攔截特性(有多種方式.用特性的方式作為例子..個人也覺得特性AOP攔截比較方便),代碼如下:

[Intercept(typeof(AOPTest))]

? ? public class TestService: ITestService

? ? {

? ? ? ? public TestService()

? ? ? ? {

? ? ? ? ? ? MyProperty = Guid.NewGuid();

? ? ? ? }

? ? ? ? public Guid MyProperty { get; set; }

? ? ? ? public List<string> GetList(string a)

? ? ? ? {

? ? ? ? ? ? return new List<string>() { "LiLei", "ZhangSan", "LiSi" };

? ? ? ? }

? ? }

然后在容器中注入我們的AOP攔截類,并開啟服務的攔截狀態.代碼如下:

public class DefaultModule : Module

? ? {

? ? ? ? protected override void Load(ContainerBuilder builder)

? ? ? ? {


? ? ? ? ? ? builder.Register(c => new AOPTest());

? ? ? ? ? ? builder.RegisterType<TestService>().As<ITestService>().PropertiesAutowired().EnableInterfaceInterceptors();

? ? ? ? }

? ? }


這里注意,一定要在你注入的服務后面加上EnableInterfaceInterceptors來開啟你的攔截.

然后在控制器中調用服務的方法,代碼如下:

public class AutoDIController : Controller

? ? {


? ? ? ? public? ITestService _testService { get; set; }


? ? ? ??

? ? ? ? // GET: AutoDI

? ? ? ? public ActionResult Index()

? ? ? ? {

? ? ? ? ? ? ViewBag.date = _testService.GetList("Name");

? ? ? ? ? ? return View();

? ? ? ? }

}

然后我們運行代碼.

效果如下:

這樣,我們就完成了使用Autofac進行AOP攔截..

Autofac的AOP攔截器還有很多功能與用法.我這里就不一一舉例了..請參考官網:http://docs.autofac.org/en/latest/advanced/interceptors.html

相關文章:

  • ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自帶的IOC容器)

  • ASP.NET Core中使用IOC三部曲(二.采用Autofac來替換IOC容器,并實現屬性注入)

  • AspectCore中的IoC容器和依賴注入

  • DIP原則、IoC以及DI

  • 全面理解 ASP.NET Core 依賴注入

  • 依賴注入和控制反轉

  • ASP.NET Core 2.0 依賴注入

  • AspectCore中的IoC容器和依賴注入

  • ASP.NET Core依賴注入解讀&使用Autofac替代實現

  • 擁抱.NET Core系列:依賴注入(1)

  • 擁抱.NET Core系列:依賴注入(2)

  • 學習ASP.NET Core,你必須了解無處不在的“依賴注入”

原文地址:https://www.cnblogs.com/GuZhenYin/p/8301500.html


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的ASP.NET Core中使用IOC三部曲(三.采用替换后的Autofac来实现AOP拦截)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www.sesehu| 欧美日韩高清在线观看 | 九九热精品视频在线 | 国产日韩成人 | 免费网站91 | 日韩第九页 | aa一级视频 | 国产群p| 欧美亚洲另类图片 | 麻豆视频国产精品 | 成人羞羞国产免费动态 | 成年人午夜影院 | 午夜精品一区二区三区在线视频 | 日本免费在线视频观看 | 毛片在哪里看 | av收藏小四郎最新地址 | 91丨九色丨蝌蚪丨丝袜 | 五月天黄色小说 | 污的视频在线观看 | 91不卡视频| 亚洲国产网址 | 久久久天天 | 国产精品成人久久电影 | 亚洲影视在线观看 | 伊人一二三| 苏晴忘穿内裤坐公交车被揉到视频 | 国产一区视频观看 | 久热精品免费视频 | 少妇精品久久久一区二区三区 | 国产精品久久久久久久久久久新郎 | 国产传媒国产传媒 | 欧美啪啪一区二区 | 性生交大片免费看l | 精品伦精品一区二区三区视频密桃 | 久久一区欧美 | 亚洲成人自拍偷拍 | 少妇一级淫免费播放 | 日本黄色三级视频 | 99久免费精品视频在线观78 | 亚洲欧美精品久久 | 寂寞少妇让水电工爽hd | 国产又粗又猛视频 | 久热在线 | 亚洲毛片大全 | 欧美午夜精品久久久久久孕妇 | 色悠悠网址 | 日韩aa| 爱爱视频一区二区 | 深夜在线免费视频 | 狠狠操夜夜 | 亚洲一区视频在线播放 | 亚洲精品一区二区三区蜜桃久 | 色哟哟国产精品 | av无线看 | 婷婷俺来也 | 天堂va蜜桃一区二区三区漫画版 | 色老板最新地址 | 国产精品高潮呻吟久久久久久 | 亚洲最大黄色网址 | 色就是色欧美色图 | 日本狠狠干 | 国产精品免费视频一区 | 中文字幕 日韩 欧美 | 精品久久久久久久久久久久久久久久久久 | 亚洲人成高清 | 久久人人人 | 日韩欧美在线观看视频 | 香蕉视频黄色 | 国产日日夜夜 | 男女羞羞的视频 | 可以看的毛片 | 3d动漫精品啪啪一区二区免费 | 黄网在线免费看 | 国产精品视频你懂的 | 日本bbwbbw| 1024视频在线 | 色77777 | 9久久9毛片又大又硬又粗 | 亚洲日本护士毛茸茸 | 91视频直接看 | 日韩欧美精品在线观看 | 得得的爱在线视频 | 国产精品国产三级国产专播品爱网 | 久久精视频 | 欧美日韩你懂的 | 色人阁在线视频 | av电影在线观看网址 | 亚洲精品久久久久 | 亚洲国产精品人人爽夜夜爽 | 国产精品99久久久久久人 | 亚洲在线电影 | 在线免费观看高清视频 | 亚洲天堂av影院 | 好男人在线视频www 亚洲福利国产 | 亚洲影院一区 | 亚洲无吗av | 欧美性受xxxx黑人xyx性爽 | 亚洲黄色免费观看 | 国产精品久久久久久久 |