国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP.NET教程 - .NET Unity IOC框架使用實(shí)例詳解

.NET Unity IOC框架使用實(shí)例詳解

2020-05-25 14:01清幽火焰 ASP.NET教程

這篇文章主要為大家詳細(xì)介紹了.NET Unity IOC框架的使用實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

.NET Unity IOC框架的使用實(shí)例,具體內(nèi)容如下

1.IOC簡(jiǎn)介

IOC(Inversion of Control), 控制反轉(zhuǎn)

DI (Dependency Injection),依賴(lài)注入

IOC的基本概念是:不創(chuàng)建對(duì)象,但是描述創(chuàng)建它們的方式。在代碼中不直接與對(duì)象和服務(wù)連接,但在配置文件中描述哪一個(gè)組件需要哪一項(xiàng)服務(wù)。容器負(fù)責(zé)將這些聯(lián)系在一起。

2.Unity引入

.NET Unity IOC框架使用實(shí)例詳解

3.創(chuàng)建單例模式容器類(lèi)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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);
    //獲取指定名稱(chēng)的配置節(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)類(lèi)

接口類(lèi)

?
1
2
3
4
public interface IExampleClass
{
 void DoHelloWord();
}

 具體實(shí)現(xiàn)類(lèi)

?
1
2
3
4
5
6
7
public class ExampleClass : IExampleClass
 {
  public void DoHelloWord()
  {
   Console.WriteLine("Hello Word!");
  }
 }

實(shí)現(xiàn)類(lèi)擴(kuò)展

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <configSections>
 <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration" />
 </configSections>
 <unity>
 <!--定義類(lèi)型別名-->
 <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)用

?
1
2
3
4
5
6
7
8
9
10
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í)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/pengdylan/p/6371724.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: av在线天堂 | 喷水av | 龙珠z普通话国语版在线观看 | 国产精品久久久久久久久久新婚 | 91精品国产日韩91久久久久久 | 亚洲高清视频网站 | 亚洲美腿 欧美 激情 另类 | 久久av综合网 | 国产精品久久久久久久午夜片 | 国内自拍视频在线观看 | 中文字幕精品一区 | 免费日韩视频 | 国产一区中文字幕 | 国产成人精品一区二区 | 国产91视频在线观看 | 亚洲精品国产第一综合99久久 | 国产午夜精品久久久久久久 | 日韩中文字幕av | 人人干日日干 | 尤物在线观看网站 | 色女人av| 欧美一级网站 | 动漫精品一区二区三区 | 中文字幕一区在线观看视频 | 欧美激情国产日韩精品一区18 | 午夜精品| 黄色一级久久 | 中文字幕av在线 | 中文字幕一区二区三区在线视频 | 午夜影剧院 | 日韩欧美在线观看视频 | 亚洲欧美激情精品一区二区 | 91精品国产一区二区三区香蕉 | 在线国产一区二区 | 日韩欧美综合 | 精品日韩| 久久精品国产99国产精品 | 亚洲视频在线观看免费 | 欧美国产精品一区二区三区 | 精品国精品国产自在久不卡 | 日韩欧美一区二区三区免费观看 |