IOC----LightInject
- 开源项目 引入
LightInject.cs
- 默认服务
new ServiceContainer
- 注册跟获取获取服务
container.Register<IFoo, Foo>();
container.Register<IFoo, AnotherFoo>("AnotherFoo");
var instance = container.GetInstance<IFoo>("AnotherFoo");
Assert.IsInstanceOfType(instance, typeof(AnotherFoo));
获取实例有多个重载,主要包含服务,借口,服务名,以及生命周期。当只有一个注册存在时,获取可以不用填写服务名
- 如果一个服务没有被注册,这时候调用容器中的接口实例会是null,这个时候可以用注册回调
var container = new ServiceContainer();
container.RegisterFallback((type, s) => true, request => new Foo());
var foo = container.GetInstance<IFoo>();
第一个断言决定了是否实例第二个委托服务,第二个是要注册的服务委托
- 容易继承与Ienumerable<T>
- 生命周期
如果注册时不指定生命周期,则是实例是临时的
- PerScopeLifetime
容器在指定范围内使用后被销毁
container.Register<IFoo,Foo>(new PerScopeLifetime());
using(container.BeginScope())
{
var firstInstance = container.GetInstance<IFoo>();
var secondInstance = container.GetInstance<IFoo>();
Assert.AreSame(firstInstance, secondInstance);
}
- PerContainerLifeTime
随容器销毁。
- PerRequestLifeTime
每次都会创建一个实例
- 另外还可以自定义生命周期
一个生命周期实例只能用于一个服务实例,不能共享
- 获取实例的机制
获取实例是在当前线程中获取
IOC----LightInject的更多相关文章
- 深入理解DIP、IoC、DI以及IoC容器
摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念.通过本文我们将一起学 ...
- 深入理解DIP、IoC、DI以及IoC容器(转)
深入理解DIP.IoC.DI以及IoC容器 摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.D ...
- 【转】深入理解DIP、IoC、DI以及IoC容器
原文链接:http://www.cnblogs.com/liuhaorain/p/3747470.html 前言 对于大部分小菜来说,当听到大牛们高谈DIP.IoC.DI以及IoC容器等名词时,有没有 ...
- [.net 面向对象程序设计深入](26)实战设计模式——使用Ioc模式(控制反转或依赖注入)实现松散耦合设计(1)
[.net 面向对象程序设计深入](26)实战设计模式——使用IoC模式(控制反转或依赖注入)实现松散耦合设计(1) 1,关于IOC模式 先看一些名词含义: IOC: Inversion of con ...
- [.net 面向对象程序设计深入](31)实战设计模式——使用Ioc模式(控制反转或依赖注入)实现松散耦合设计(1)
[.net 面向对象程序设计深入](31)实战设计模式——使用IoC模式(控制反转或依赖注入)实现松散耦合设计(1) 1,关于IOC模式 先看一些名词含义: IOC: Inversion of con ...
- 学习 IOC 设计模式前必读:依赖注入的三种实现
一直以来就是越难的东西越值钱! 嘿嘿,这篇博文章转载自:http://www.cnblogs.com/liuhaorain/p/3747470.html 摘要 面向对象设计(OOD)有助于我们开发出高 ...
- 【来龙去脉系列】深入理解DIP、IoC、DI以及IoC容器
摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念.通过本文我们将一起学 ...
- IOC容器之Autofac
讲到IOC容器,就必须提到DIP(依赖倒置原则). DIP是OOD(面向对象设计)的一个重要思想,在该原则上引申出了\IOC(控制反转)\DI(依赖注入)\IOC容器. 居然讲到IOC容器,当然我们要 ...
- 17个IoC 软件包和项目
原文:17个IoC 软件包和项目 1.Autofac GitHub:https://github.com/autofac/Autofac 描述:An addictive .NET IoC contai ...
- 学习AOP之透过Spring的Ioc理解Advisor
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...
随机推荐
- MySQL和PostgreSQL 导入数据对照
在虚拟机上測评了下MySQL 和 PostgreSQL 的各种LOAD FILE方式以及时间. 由于是虚拟机上的測评,所以时间仅仅做參考,不要太较真, 看看就好了.MySQL 工具: 1. 自带 ...
- C#_delegate - Pair<T> 静态绑定
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- AsyncTask的用法
在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行.在单线程模型中始终要记住两条法则: 1. 不要阻塞UI线程 2. 确保只 ...
- [COCOS2DX]官网helloworld在VS2012中的部署
VS2012.JDK.Eclipse(和adt插件)之类的基本安装这里直接略过. 以下为对cocos2dx 3.5版本在VS2012中部署的摸索: 开源项目“愤怒的小鸟”原来设置: .;..\Clas ...
- ios通知-kvo
// KVC: Key Value Coding, 常见作用:给模型属性赋值 // KVO: Key Value Observing, 常用作用:监听模型属性值的改变 // // ViewCon ...
- C语言里的文件函数
1.File *pf = fopen("文件名","打开方式"); 文件名可以加路径,两个"\\"或者一个"/" 打开方 ...
- [转]ORACLE日期时间函数大全
本文转自:http://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html ORACLE日期时间函数大全 TO_DATE格式(以时间: ::2 ...
- 快速了解Scala技术栈
http://www.infoq.com/cn/articles/scala-technology/ 我无可救药地成为了Scala的超级粉丝.在我使用Scala开发项目以及编写框架后,它就仿佛凝聚成为 ...
- C# 反射 设置字段值无效的解决办法
FieldInfo.SetValue的原型是:void SetValue(object obj, object value)当你传递一个值类型(结构是值类型)的时候,它要转化成object,也就是要装 ...
- dll不同的调用方式
LoadLibrary 一般是动态加载DLL时(你并不需要对应的头文件,和LIB) #pragma comment 一般是静态加载DLL时(对应的头文件.DLL,和LIB缺一不可,并且生产的EXE没有 ...