.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!
.NET Unity IOC框架使用实例的更多相关文章
- 今天研究Unity Ioc 框架
今天研究Unity Ioc 框架,被自己坑了两个多小时. 运行就报错,反反复复检查了很多次,配置文件,代码都没有问题,也从新写了好几遍. 最后仔细看报错消息才知道,config文件没有生成到目录……… ...
- MVC4 基于 Unity Ioc 框架的 ControllerFactory
首先引入Untiy框架. 可以在NuGet程序包 管理器中直接安装. 新建 继承DefaultControllerFactory 的UnityControllerFactory: 重写虚方法GetC ...
- Unity Ioc框架简单例子
IOC:英文全称:Inversion of Control,中文名称:控制反转,它还有个名字叫依赖注入(Dependency Injection).作用:将各层的对象以松耦合的方式组织在一起,解耦,各 ...
- .NET领域最为流行的IOC框架之一Autofac WebAPI2使用Autofac实现IOC属性注入完美解决方案 AutoFac容器初步
.NET领域最为流行的IOC框架之一Autofac 一.前言 Autofac是.NET领域最为流行的IOC框架之一,微软的Orchad开源程序使用的就是Autofac,Nopcommerce开源程 ...
- 使用Microsoft的IoC框架:Unity来对.NET应用进行解耦
1.IoC/DI简介 IoC 即 Inversion of Control,DI 即 Dependency Injection,前一个中文含义为控制反转,后一个译为依赖注入,可以理解成一种编程模式,详 ...
- IOC框架之 Unity 入门
十年河东,十年河西,莫欺少年穷 学无止境,精益求精 Unity是什么? Unity是patterns & practices团队开发的一个轻量级.可扩展的依赖注入容器,具有如下的特性: 1. ...
- 【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入
前言:在C/S架构上,WPF无疑已经是"桌面一霸"了.在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用.但是WPF也有很多年的历史了,并且基于MVVM ...
- Unity IOC/DI使用
一.IOC介绍 IOC(Inversion of Control),中文译为控制反转,又称为“依赖注入”(DI =Dependence Injection) IOC的基本概念是:不创建对象,但是描述创 ...
- Unity Ioc 依赖倒置及Untity AOP被动拦截/自动拦截
各位博友金安,首先声明这是一篇转载的博客,原文链接:https://www.cnblogs.com/scottpei/archive/2013/01/08/2851087.html 十年河东,十年河西 ...
随机推荐
- Hadoop完全分布式搭建全过程
本次操作共4台虚拟机(node211,node212,node213,node214),node211为NameNode,其余3台为DataNode,SecondaryNamenode为node212 ...
- 洛谷P5264 【模板】多项式三角函数
题面 传送门 题解 据说有一个叫做欧拉公式的东西 \[e^{ix}=\cos(x)+i\sin(x)\] 别问我为啥我今天第一次看到它 那么显然也有 \[e^{-ix}=\cos(x)-i\sin(x ...
- SSO单点登录入门
1,SSO简介 SSO(Single Sign-On,单点登录)是身份管理中的一部分.SSO 的一种较为通俗的定义是:SSO 是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过 ...
- [ActionScript 3.0] 创建倒影
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Display ...
- web渗透-sql注入
何为sql注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,得到想要得到的信息. OWASPTop 10 此处的注 ...
- jqury属性操作,特殊效果
一. 常用属性操作 1.html() 取出或设置html内容 // 取出html内容 var $htm = $('#div1').html(); // 设置html内容 $('#div1').html ...
- myeclipse上down出的svn项目,文件后面不显示版本号和修改人
找到 windows ->preferences->General->Appearance->Lable Decorations 下拉找到svn 勾选上
- UIImageView笔记
image的伸缩变换 最好是image和imageview的size一致.如果不一致,最终的效果由imageView的contentMode和image的属性共同决定. 如果image没有cap in ...
- andorid avd 下 使用 fiddler 抓包
Fiddler 设置:
- linux源码中的核心数据结构
寄存器 pt_regs 进程线程 struct task_struct: 进程,或者是线程数据结构,在include/linux/sched.h里面定义的,与硬件体系结构无关 struct threa ...