NET Core 3.0 AutoFac替换内置DI的新姿势
.NET Core 3.0 和 以往版本不同,替換AutoFac服務(wù)的方式有了一定的變化,在嘗試著升級(jí)項(xiàng)目的時(shí)候出現(xiàn)了一些問題。
原來(lái)在NET Core 2.1時(shí)候,AutoFac返回一個(gè)?IServiceProvider?參數(shù)注入到ConfigureServices .NET Core 服務(wù)中,基本大痣是這樣做的。
首先我們需要一個(gè)重寫?Autofac.Module?的方法,這將用于將我們?Register?[數(shù)據(jù)訪問層] 以及 ?Services?[邏輯層] 的注冊(cè)。
? 隨后,將.NET Core的ConfigureServices方法的返回值改成IServiceProvider,這將用于注入你的服務(wù)。
上面的代碼中我們調(diào)用了?ForRegisterAutoFac?我們自定義的方法,這將我們定義的策略和AutoFac 一起替換內(nèi)置DI.
? 在API層,我們依賴注入Service,這樣我們.NET Core2.1基本的AutoFac就實(shí)現(xiàn)了。
就現(xiàn)在我們說(shuō)一說(shuō).NET Core3.0 和 以往版本的區(qū)別。我將所有項(xiàng)目以及依賴項(xiàng)全部改成3.0版本,就現(xiàn)在啟動(dòng),你會(huì)發(fā)現(xiàn)意想不到的事情。
?
啥?你說(shuō)啥?弄薩累? 咋不管用了嘞?
經(jīng)過看了官方文檔,才知道..NET Core 3.0?引入了具有強(qiáng)類型容器配置的功能。它提供了?ConfigureContainer?方法,您可以在其中使用Autofac來(lái)注冊(cè)事物,而不必通過?ServiceCollection?來(lái)注冊(cè)事物。so....好吧!在.NET Core3.0 將如何配置。
首先我們需要在?Program.cs?中修改服務(wù)工廠,內(nèi)置是?ServiceProviderFactory?的,我們將要指定為:?AutofacServiceProviderFactory?。
現(xiàn)在需要在?Startup.cs?中添加方法?ConfigureContainer?,并添加以下代碼。
然后大功告成,啟動(dòng)再也沒問題了~。
?Github地址:https://github.com/zaranetCore/Blog.DDD.Solucation
總結(jié)
以上是生活随笔為你收集整理的NET Core 3.0 AutoFac替换内置DI的新姿势的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谓词筛选表达式的扩展库Predicate
- 下一篇: asp.net core 使用Mysql