博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET Unity IOC框架使用实例
阅读量:5077 次
发布时间:2019-06-12

本文共 3169 字,大约阅读时间需要 10 分钟。

1.IOC简介

IOC(Inversion of Control), 控制反转

DI (Dependency Injection),依赖注入

IOC的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。

2.Unity引入

 

3.创建单例模式容器类

 

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{    ///     /// Unity IOC单例模式     ///     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);                //获取指定名称的配置节                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
(); } return instance; } //IOC注入实体 public static T GetInstanceDAL
() { return getInstance().container.Resolve
(); } }}

 

此处是将Unity config配置单独成一个文件,方便管理。

4.添加IOC相关类

接口类

public interface IExampleClass{    void DoHelloWord();}

 

具体实现类

public class ExampleClass : IExampleClass    {        public void DoHelloWord()        {            Console.WriteLine("Hello Word!");        }    }

 

实现类扩展

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

 

 

6.函数调用

class Program    {        static void Main(string[] args)        {            //var dao = UnitySingleton.GetInstanceDAL
(); var dao = UnitySingleton.GetInstanceDAL
(); dao.DoWork(); Console.ReadLine(); } }

 

 

7.结果显示

Hello Word!

Hello Word!

转载于:https://www.cnblogs.com/pengdylan/p/6371724.html

你可能感兴趣的文章
Software--Spring Boot--Contact 项目初期
查看>>
什么是位、字节、字、KB、MB?
查看>>
.net 将excel与SQL数据交换
查看>>
hdu 2680(最短路)
查看>>
SpringMVC中的ResponseBody和RequestBody介绍
查看>>
实验四 内存的分配与回收
查看>>
编译Boost
查看>>
深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
查看>>
tar exclude用法
查看>>
spider RPC高级特性
查看>>
hadoop debug script
查看>>
Hadoop could not find or load main class
查看>>
mac lion 系统安装
查看>>
Linux下程序守护脚本的应用实例
查看>>
win7开启Administrator账户
查看>>
Vue.js中全局组件和局部组件的编写差异和注意事项
查看>>
cordova 日曆 聯系人 插件使用
查看>>
1046: [HAOI2007]上升序列(dp)
查看>>
Maven创建Web项目、、、整合SSM框架
查看>>
转!!深入理解 Session 与 Cookie
查看>>