所謂“依懶注入”
就是將應用程式所依賴的組件在運行時動態載入到應用
程式中。依賴注入的目標並非為應用程式添加更多的功能,而是提升了組件的
重用性,並為應用程式搭建一個具有較強靈活性和擴充性的平台。在程式實現上就用
Assembly.Load(AssemblyName).CreateInstance(typeName)在程式運行時動態建立執行個體.PetShop4.0中多次應用了與設定檔相強合的反射注入技術。下面就介紹一下反射注入技術在PetShop4.0多層應用程式和應用。
| 項目名 |
PetShop.CacheDependencyFactory |
| 類名 |
DependencyAccess |
方法 |
privatestaticIPetShopCacheDependency LoadInstance(string className) |
| 設定檔中的值 |
<appSetting>……….<add key="CacheDependencyAssembly" value="PetShop.TableCacheDependency"/>……</appSetting> |
| 代碼檔案中的實現 |
string path=ConfigurationManager.AppSettings["CacheDependencyAssembly"];string fullyQualifiedClass = path + "." + className;return (IPetShopCacheDependency)Assembly.Load(path).CreateInstance(fullyQualifiedClass); |
| 從上面的實現來看其實是很簡單的。三個步驟就實現了:兩前個步驟,主要是為動態建立執行個體提供參數:程式集名稱,和類名稱(類型名).1. 執行ConfigurationManager.AppSettings[“keyName”]來擷取設定檔中的索引值,也就程式集的名稱AssemblyName。2. 組合類別名稱typeName。3. 執行Assembly.Load(AssemblyName).CreateInstance(typeName)進行動太建立執行個體其實PetShop4.0中實現反射注入技術都是上面的那種思想。所以下面就省去設定檔中的資訊和實現的代碼實現資訊,只是統計反射注入技術在PetShop4.0中應用的位置資訊。 |
| 項目名 |
PetShop.DALFactory |
| 類名 |
DataAccess |
| 方法 |
1. public static PetShop.IDAL.ICategory CreateCategory()2. public static PetShop.IDAL.IInventory CreateInventory()3. public static PetShop.IDAL.IItem CreateItem()4. public static PetShop.IDAL.IOrder CreateOrder()5. public static PetShop.IDAL.IProduct CreateProduct() |
| 項目名 |
PetShop.MessagingFactory |
| 類名 |
QueueAccess |
| 方法 |
public static PetShop.IMessaging.IOrder CreateOrder() |
| 項目名 |
PetShop.ProfileDALFactory |
| 類名 |
DataAccess |
| 方法 |
Publics taticPetShop.IProfileDAL.IPetShopProfileProviderCreatePetShopProfileProvider() |
| 項目名 |
PetShop.ProfileDALFactory |
| 類名 |
DataAccess |
| 方法 |
Publics taticPetShop.IProfileDAL.IPetShopProfileProviderCreatePetShopProfileProvider() |
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1534129