我們都知道,.net core天生自帶IOC容器,但是他的功能其實並不強大,而且有坑:在構造注入的時候,他默認找參數最少的構造函數。
這里,我講解如何使用Autofac去接管IOC,至於為什么要選Autofac,這個其實我也是隨大眾,不過后面我講到關於使用Autofac實現AOP的時候,或許你能發現他的好處
第一步,引包
第二步,修改startup.cs文件
首先,在類的內部定義一個新的方法
1 public void ConfigureContainer(ContainerBuilder builder) 2 { 3 // 在這里添加服務注冊 4 //builder.RegisterType<ProductRepository> ().As<IProductRepository>();//注冊 5 }
在這個方法里,完成服務注冊。對於服務注冊這塊,關於Autofac的API如果有需要更多的了解的話,可以查閱Autofac指南
第三步,修改Program.cs文件
.UseServiceProviderFactory(new AutofacServiceProviderFactory())//使用AutoFac做IOC和AOP
第四步,正式使用
對於使用IOC,雖然Autofac有多種騷姿勢,但是我這里還是推薦使用構造注入,如果要問為什么,其實關鍵在於,你不用在每個類庫中都去拉包,到處都拉包的話,項目就會對組件產生依賴,產生一定的耦合。