標籤:複製 src XML 注入 配置 nec 對象 維護 注意
概述
Unity是一個輕量級的可擴充的依賴注入容器,支援建構函式,屬性和方法調用注入。Unity可以處理那些從事基於組件的軟體工程的開發人員所面對的問題。構建一個成功應用程式的關鍵是實現非常鬆散的耦合設計。鬆散耦合的應用程式更靈活,更易於維護。這樣的程式也更容易在開發期間進行測試。你可以類比對象,具有較強的具體依賴關係的墊片(輕量級類比實現),如資料庫連接,網路連接,ERP串連,和豐富的使用者介面組件。例如,處理客戶資訊的對象可能依賴於其他對象訪問的資料存放區,驗證資訊,並檢查該使用者是否被授權執行更新。依賴注入技術,可確保客戶類正確執行個體化和填充所有這些對象,尤其是在依賴可能是抽象的 。
Unity 設定檔
<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration"/> </configSections> <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> <container> <!--register type="full class name,namespace"--> <register type="UnityTest.ISqlHelper,UnityTest" mapTo="UnityTest.MysqlHelper,UnityTest"> <lifetime type="singleton"/> </register> </container> </unity></configuration>
需要注意的是type和mapTo的值,用逗號隔開兩部分,一是類的全部,包括命名空間,二是命名空間。
那麼,也有其他的方法,先設定好命名空間,那就直接寫類名即可,這個就不說了。
這裡是簡單的配置,詳細的的配置自行搜尋。
下載與引用
到官方下載:http://unity.codeplex.com/
項目裡引用dll
Microsoft.Practices.Unity.dll
Microsoft.Practices.Unity.Configuration.dll
程式
假設對資料庫操作類進行更換,那先建立一個操作類的介面,具體實現留著派生的類。
操作類介面
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace UnityTest{ public interface ISqlHelper { string SqlConnection(); } public interface IOtherHelper { string GetSqlConnection(); }}
衍生類別一:Ms SQL Server
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace UnityTest{ public class MssqlHelper : ISqlHelper { public string SqlConnection() { return "this mssql."; } }}
衍生類別二:MySQL
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace UnityTest{ public class MysqlHelper : ISqlHelper { public string SqlConnection() { return "this mysql."; } }}
其他類
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace UnityTest{ public class MyOtherHelper : IOtherHelper { ISqlHelper sql; public MyOtherHelper(ISqlHelper sql) { this.sql = sql; } public string GetSqlConnection() { return this.sql.SqlConnection(); } }}
主程式調用
按 Ctrl+C 複製代碼按 Ctrl+C 複製代碼
到這裡,算結束了。
自己去複製代碼運行一次,相信你一定能更深刻地理解。
C# 對輕量級(IoC Container)依賴注入Unity的使用