Browse by Tags
Sorry, but there are no more tags available to filter with.
-
Autofac筆記6-Resolve時依參數傳回不同型別
-
好久沒寫 Autofac 筆記 ,記錄一則最近遇到的小需求。系統中針對介面(例如:IBlah)實作了多個型別,Resolve<IBlah>() 時希望透過參數指定傳回不同型別。 依據 官方文件 ,實現這類需求的最簡單做法是使用 Named Service(具名服務)或 Keyed Service(鍵值對應服務), Register<T>() 後不使用 As<IBlah>(),而改用 Named<IBlah>("服務名稱") 或 Keyed<IBlah>...
-
Autofac筆記5-屬性注入
-
前面談過 傳入建構參數 ,但並非所有物件參數都可由建構式傳入,有些要透過屬性指定(例如: new MyObject() { SomeProperty = SomeValue };),而這也是IoC/DI的工作職掌之一,專業術語叫Property Injection(屬性注入)。 解說前先介紹幾個測試用類別: Worker類別有個屬性Logger,接受實作ILogger介面的記錄元件;我們簡單寫個Logger類別實作ILogger,將訊息輸出到Console敷衍兩下湊數。 using System;...
-
Autofac筆記4-建構參數與建構式選擇
-
在先前的範例( 1 2 ),透過Resolve<T>()建立的物件都只有單一建構式且不需建構參數,如果有多個建構式或建構時需要建構參數時,Autofac會如何處理? 當類別有多個建構式時,Autofac會依"能符合最多個容器提供參數的建構式優先"做為選擇依據。其 英文原文 為"Autofac automatically chooses the constructor with the most parameters that are able to be...
-
Autofac筆記3-關於Lifetime Scope
-
在使用IoC設計模式時,有一個有點難懂卻不能迴避的問題 -- 如何妥善管理物件生命週期,避免記憶體洩漏(Memory Leak)? 要了解此議題,先大推一篇關於Autofac物件生命週期的 經典文章 ,其中有頗詳細的闡述,這篇筆記只簡短摘要我實際應用的心得,關於完整說明推薦大家參考原文。 問題從何而來? 基本上,純.NET世界的資源(Managed Resource,例如: 儲存.NET物件所用的記憶體)有GC(Garbage Collection)機制把關,它能精準掌握物件是否仍在有效範圍,當物件已不可能再被使用...
-
Autofac筆記2-淺談Singleton
-
開始前先聲明(坦白從寬~),我對Design Pattern的研究十分淺薄,寫起IoC、Singleton的題材有種越級打怪的心虛感,我知道本部落格有不少讀者深諳此道,如筆記有疑或有誤之處,懇請十方大德不吝指正。 Singleton 是挺常見的設計模式,旨在確保該型別於Process中只會產生單一Instance(執行個體)。在.NET實現Singleton慣用的做法是將建構式設成private,另外宣告一個static屬性命名為Instance,在第一次get時建立物件,之後每次要取用該類別時不再重新建構...
-
Autofac筆記 1
-
決定在專案引進IoC,端午假期在網路上划龍舟,做了些研究。忘性愈來愈大,故筆記不可少,就順便跟大家分享。(對於IoC,我仍在初學摸索階段,諸位先進如發現有誤入歧途之處,還請指正) 【IoC?】 IoC是什麼? DI又是什麼? 很多.NET領域的老師及同學已深入研究並有專文介紹,此處不再班門弄斧: 保哥的文章: Unity Application Block 與 ASP.NET MVC 學習資源整理 91的介紹: [Software Architecture]IoC and DI (Spring.NET...