• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > .NET Unity IOC框架使用实例详解

.NET Unity IOC框架使用实例详解

作者:清幽火焰 字体:[增加 减小] 来源:互联网 时间:2018-08-20

清幽火焰 通过本文主要向大家介绍了.NET,Unity,IOC等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

.NET Unity IOC框架的使用实例,具体内容如下

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

此处是将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

<?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">
  <!--映射关系-->
  <!--<register type="IExampleClass" mapTo="ExampleClass"></register>-->
  <register type="UnityIocTest.IExampleClass,UnityIocTest" mapTo="UnityIocTest.ExampleClass,UnityIocTest"></register>
 </container>
 </unity>
</configuration>

6.函数调用

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

7.结果显示

Hello Word!

Hello Word!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Asp.net SignalR 应用并实现群聊功能 开源代码
  • asp.net动态更新
  • asp.net利用母版制作页脚效果
  • Asp.Net服务器发送HTTP标头后无法设置内容类型的问题解决
  • 使用asp.net mvc,boostrap及knockout.js开发微信自定义菜单编辑工具(推荐)
  • 详解ASP.NET MVC 常用扩展点:过滤器、模型绑定
  • ASP.NET Core发送邮件的方法
  • 在ASP.NET Core 中发送邮件的实现方法(必看篇)
  • ASP.NET MVC从视图传参到控制器的几种形式
  • .net core使用redis基于StackExchange.Redis

相关文章

  • 2017-05-11asp.net 文件下载的通用方法
  • 2017-05-11asp.net WebForm页面间传值方法
  • 2017-05-11ASP.NET Lable中进行换行解决方案
  • 2017-05-11asp.net GridView 中增加记录的方法
  • 2017-05-11ASP.NET 实现验证码以及刷新验证码的小例子
  • 2017-05-11asp.net Ajax 安装与卸载方法
  • 2017-05-11asp.net 生成静态时的过滤viewstate的实现方法
  • 2017-05-11asp.net读取excel中的数据并绑定在gridview
  • 2017-05-11asp.net子窗体与父窗体交互实战分享
  • 2017-05-11dhtmlxGrid 添加行号详细步骤

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ASP.NET 导出到Excel时保留换行的代码
    • 关于 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。的解决方法
    • ASP.NET 根据汉字获取汉字拼音的首字母(含多音字)
    • 无法将类型为“System.Web.UI.WebControls.HiddenField”的对象强制转换为类型的错误的解决
    • Asp.Net(C#)自动执行计划任务的程序实例分析分享
    • 初学者的福音:游戏开发新手入门指南
    • 深入解析.NET 许可证编译器 (Lc.exe) 的原理与源代码剖析
    • ASP.net中网站访问量统计方法代码
    • ASP.NET2.0中用Gridview控件操作数据的代码
    • asp.net结合Ajax验证用户名是否存在的代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有