C# 對輕量級(IoC Container)依賴注入Unity的使用

來源:互聯網
上載者:User

標籤:複製   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的使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.