Aps.Net WebApi依賴注入


在開始之前,讓我們先來了解一下什么是依賴注入?

在編程中,依賴注入是一種實現控制反轉且用於解決依賴性問題的設計模式。一個依賴關系指的是可被利用的一種對象 。依賴注入是將所依賴的傳遞給將要使用的從屬對象。該服務將會變成客戶端狀態的一部分並傳遞服務給客戶端,而不允許客戶端來建立或尋找服務。依賴注入使我們的編程代碼變得松散耦合,易於管理。

  依賴注入的類型:

構造函數注入:在構造函數注入中,注入器通過客戶端類構造函數提供服務(依賴性)。

屬性注入:在屬性注入(又名Setter注入)中,注入器通過客戶端類的公共屬性提供依賴性。

方法注入:在這種類型的注入中,客戶端類實現一個接口,該接口聲明方法以提供依賴性,並且注入器使用此接口來提供對客戶端類的依賴性。

依賴注入的好處:

  • 減少依賴性
    • 依賴注入可以消除或者減少組件間不必要的依賴性。以降低組件改變時所帶來的影響組件
  • 增強可重用性
    • 減少組件依賴性可以增強組件的可重用性。如果在不同的上下文中需要某個接口的不同實現,或者只是同一實現的不同配置,則可以將該組件配置為使用該實現。無需更改代碼。
  • 增加代碼的可測試性
    • 依賴注入也增加了組件的可測試性。當依賴項可以注入組件時,意味着可以注入這些依賴項的模擬實現。模擬對象用於測試作為實際實現的替代,並且可以配置模擬對象的行為
  • 增強代碼的可讀性
    • 依賴注入可將依賴項移動到組件的接口。使得更容易看到組件中哪些具有依賴關系,從而使代碼更具可讀性。
  • 減少依賴性承載
    • 依賴性承載會在代碼中產生大量“噪音”,使其難以閱讀和維護,並且使得組件更難測試。而依賴注入可以減少依賴性承載和靜態單例的使用,可以將組件完美的連接在一起

1.首選需要在Nuget中安裝Autofac、Autofac.WebApi2

 

2.在Global.asax的Application_Start方法中加入如下代碼:

//*依賴注入*/
var builder = new ContainerBuilder();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

//注入項目名稱(將BusinessRepository、MysqlDBRepository項目中的所有對象注入)
//var BusinessRepository = Assembly.Load("BusinessRepository");
//var MysqlDBRepository = Assembly.Load("MysqlDBRepository");
//builder.RegisterAssemblyTypes(BusinessRepository).AsImplementedInterfaces();
//builder.RegisterAssemblyTypes(MysqlDBRepository).AsImplementedInterfaces();

//單個對象注入(在項目中需要用到注入的對象都必須進行注入)
builder.RegisterType<ProductBusinessRepository>().As<IProductBusinessRepository>();
builder.RegisterType<ProductRepository>().As<IProductRepository>();

var container = builder.Build();
var resolver = new AutofacWebApiDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = resolver;    

3.在控制器中使用依賴注入

 

 4.獲取接口數據

5.Demo地址:https://pan.baidu.com/s/1XYOLmOQDnTMEW68oM2Q7XQ 

提取碼:6ski 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM