.NET Unity IOC框架使用實(shí)例詳解
.NET Unity IOC框架的使用實(shí)例,具體內(nèi)容如下
1.IOC簡(jiǎn)介
IOC(Inversion of Control), 控制反轉(zhuǎn)
DI (Dependency Injection),依賴注入
IOC的基本概念是:不創(chuàng)建對(duì)象,但是描述創(chuàng)建它們的方式。在代碼中不直接與對(duì)象和服務(wù)連接,但在配置文件中描述哪一個(gè)組件需要哪一項(xiàng)服務(wù)。容器負(fù)責(zé)將這些聯(lián)系在一起。
2.Unity引入

3.創(chuàng)建單例模式容器類
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UnityIocTest
{
/// <summary>
/// Unity IOC單例模式
/// </summary>
public class UnitySingleton
{
//單例
private static UnitySingleton instance;
//ioc容器
public IUnityContainer container;
//獲取單例
public static UnitySingleton getInstance()
{
if (instance == null || instance.container == null)
{
string configFile = "Unity.config";
var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = configFile };
//從config文件中讀取配置信息
Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
//獲取指定名稱的配置節(jié)
UnityConfigurationSection section = (UnityConfigurationSection)configuration.GetSection("unity");
instance = new UnitySingleton()
{
//container = new UnityContainer().LoadConfiguration((UnityConfigurationSection)ConfigurationManager.GetSection("unity"), "MyContainer")
container = new UnityContainer().LoadConfiguration(section, "MyContainer")
//container = new UnityContainer()
};
//instance.container.RegisterType<IExampleClass, ExampleClass>();
}
return instance;
}
//IOC注入實(shí)體
public static T GetInstanceDAL<T>()
{
return getInstance().container.Resolve<T>();
}
}
}
此處是將Unity config配置單獨(dú)成一個(gè)文件,方便管理。
4.添加IOC相關(guān)類
接口類
public interface IExampleClass
{
void DoHelloWord();
}
具體實(shí)現(xiàn)類
public class ExampleClass : IExampleClass
{
public void DoHelloWord()
{
Console.WriteLine("Hello Word!");
}
}
實(shí)現(xiàn)類擴(kuò)展
public class DIExampleClass
{
//屬性注入
[Dependency]
public IExampleClass example { get; set; }
private IExampleClass testInject;
public void DoWork()
{
example.DoHelloWord();
testInject.DoHelloWord();
}
//方法注入
[InjectionMethod]
public void Initialize(IExampleClass instance)
{
testInject = instance;
}
}
5.添加配置文件Unity.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration" /> </configSections> <unity> <!--定義類型別名--> <aliases> <add alias="IExampleClass" type="UnityIocTest.IExampleClass,UnityIocTest" /> <add alias="ExampleClass" type="UnityIocTest.ExampleClass,UnityIocTest" /> </aliases> <!--容器--> <container name="MyContainer"> <!--映射關(guān)系--> <!--<register type="IExampleClass" mapTo="ExampleClass"></register>--> <register type="UnityIocTest.IExampleClass,UnityIocTest" mapTo="UnityIocTest.ExampleClass,UnityIocTest"></register> </container> </unity> </configuration>
6.函數(shù)調(diào)用
class Program
{
static void Main(string[] args)
{
//var dao = UnitySingleton.GetInstanceDAL<IExampleClass>();
var dao = UnitySingleton.GetInstanceDAL<DIExampleClass>();
dao.DoWork();
Console.ReadLine();
}
}
7.結(jié)果顯示
Hello Word!
Hello Word!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后臺(tái)管理系統(tǒng)之前端頁(yè)面框架構(gòu)建源碼分享
- asp.net CommunityServer中的wwwStatus
- .Net Core簡(jiǎn)單使用Mvc內(nèi)置的Ioc(續(xù))
- .Net Core簡(jiǎn)單使用Mvc內(nèi)置的Ioc
- Spring.Net控制反轉(zhuǎn)IoC入門(mén)使用
- ASP.NET Core應(yīng)用中與第三方IoC/DI框架的整合
- MVC使用Spring.Net應(yīng)用IOC(依賴倒置)學(xué)習(xí)筆記3
- .net MVC使用IPrincipal進(jìn)行Form登錄即權(quán)限驗(yàn)證(3)
- .net MVC使用Session驗(yàn)證用戶登錄(4)
相關(guān)文章
Jenkins編譯.NET?Core、.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS
這篇文章介紹了Jenkins編譯.NET?Core、.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
關(guān)于ASP.NET中TreeView用法的一個(gè)小例子
下面是一個(gè)Treeview動(dòng)態(tài)的綁定3層深度的樹(shù)的代碼,有需要的朋友可以參考一下2013-12-12
asp.net實(shí)現(xiàn)存儲(chǔ)和讀取數(shù)據(jù)庫(kù)圖片
這篇文章主要為大家詳細(xì)介紹了asp.net實(shí)現(xiàn)存儲(chǔ)和讀取數(shù)據(jù)庫(kù)圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
ASP.NET中畫(huà)圖形驗(yàn)證碼的實(shí)現(xiàn)代碼
這篇文章給大家介紹了asp.net中畫(huà)圖形驗(yàn)證碼的實(shí)現(xiàn)方法,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-01-01
asp.net 簡(jiǎn)單單點(diǎn)登錄技術(shù)分析
單點(diǎn)登錄,又叫SSO(Single Sign On)。在一些cms或者OA中比較常用到這種登錄模式,目的是為防止重復(fù)登錄。而其實(shí)現(xiàn)原理也頗為簡(jiǎn)單,只要Cache的形式就可以實(shí)現(xiàn),這里只用于簡(jiǎn)單記錄下,呵呵……2011-02-02
C#.net格式化時(shí)間字符串達(dá)到不同的顯示效果
時(shí)候我們要對(duì)時(shí)間進(jìn)行轉(zhuǎn)換,達(dá)到不同的顯示效果,本文將幫助你實(shí)現(xiàn)這個(gè)多彩的效果,整理很詳細(xì),以備不時(shí)之需,感興趣的朋友可以了解下,或許本文對(duì)你有所幫助2013-01-01

