WCF - Autofac IOC
/// <summary>
/// IOC实例提供者,基于AutoFac
///
/// </summary>
public class IocInstanceProvider : IInstanceProvider
{
Type serviceType;
IContainer container; public IocInstanceProvider(Type serviceType)
{
this.serviceType = serviceType;
container = RegisterDependency();
}
private IContainer RegisterDependency()
{
var builder = new ContainerBuilder(); builder.RegisterType(Service1).InstancePerLifetimeScope(); //配置外部接口
builder.RegisterType<Test>().As<ITest>().SingleInstance();
return builder.Build();
} public object GetInstance(InstanceContext instanceContext, Message message)
{
return container.Resolve(serviceType);
} public object GetInstance(InstanceContext instanceContext)
{
return GetInstance(instanceContext, null);
} public void ReleaseInstance(InstanceContext instanceContext, object instance)
{
if (instance is IDisposable)
((IDisposable)instance).Dispose();
}
}
/// <summary>
/// 使用IOC必须加上的特性,只能在实现类上使用
///
/// </summary>
public class IocServiceBehavior : Attribute, IServiceBehavior
{
public void AddBindingParameters(ServiceDescription serviceDescription
, ServiceHostBase serviceHostBase
, Collection<ServiceEndpoint> endpoints
, BindingParameterCollection bindingParameters)
{ } public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
foreach (ChannelDispatcher item in serviceHostBase.ChannelDispatchers)
{
foreach (var ed in item.Endpoints)
{
if (!ed.IsSystemEndpoint)
{
ed.DispatchRuntime.InstanceProvider = new IocInstanceProvider(serviceDescription.ServiceType);
}
}
}
} public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
}
使用:
[IocServiceBehavior]
public class Service1:IService1{ //methods
}
WCF - Autofac IOC的更多相关文章
- AutoFac IoC DI 依赖注入
AutoFac IoC DI 依赖注入 记录点点滴滴知识,为了更好的服务后来者! 一.为什么使用AutoFac? 之前介绍了Unity和Ninject两个IOC容器,但是发现园子里用AutoFac的貌 ...
- WCF+Autofac 实现构造函数依赖注入
1.新建一个项目 2.要对WCF服务实现Autofac注入,需要实现2个接口,IInstanceProvider与IServiceBehavior,并让实现IServiceBehavior的类成为一个 ...
- Autofac IOC框架
ASP.NET Core自带了一个轻量级的IOC容器 但是只提供了最基本的AddXXX方法来绑定实例关系 需要一个一个添加 可以使用其他IOC容器来替换内置的 ABP自带Castl ...
- AutoFac Ioc依赖注入容器
本文原著:牛毅 原文路径 http://niuyi.github.io/blog/2012/04/06/autofac-by-unit-test/ 理解IOC容器请看下图: 没有使用IOC容器的情况 ...
- Autofac IoC容器基本实战【2】
原文:http://www.cnblogs.com/liping13599168/archive/2011/07/16/2108209.html Autofac是一款IOC框架,比较于其他的IOC框架 ...
- Autofac IoC容器基本使用步骤【1】
原文:http://www.bkjia.com/Asp_Netjc/888119.html [原文中有一个地方报错,下面已修改] 一.基本步骤: 1.设计适合控制反转(IoC)的应用程序 2.给应用 ...
- WPF MVVM架构 EF、WCF、IOC 设计示例经典
概要 该演示项目利用WPF应用程序构建的MVVM架构示例, 运用了Unity容器接口注入, MVVM的经典设计, 后台利用的EF+WCF. 后台实现: 从数据库生成的emdx 结合上下文进行数据交互, ...
- autofac IOC
http://www.cnblogs.com/liupeng/p/4806184.html srvanyui 自建服务
- webix前端架构的项目应用(项目框架为Web API+autofac+ioc+mysql+webix)
webix框架兼容javascript.HTML.CSS,应用比较灵活,应用框架时,配合后台webAPI,整个web项目里面,App文件夹保存前台的多语言文件,图片文件,webix原代码js.css, ...
随机推荐
- AS可视化布局中文乱码
求助android studio 的可视化布局中文乱码-CSDN论坛-CSDN.NET-中国最大的IT技术社区http://bbs.csdn.net/topics/391887442 Android ...
- bzoj2755【SCOI2012】喵星人的入侵
输入格式 第一行为三个整数n,m,K,分别表示地图的长和宽,以及最多能放置的炮塔数量. 接下来的n行,每行包含m个字符,‘#’表示地图上原有的障碍,‘.’表示该处为空地,数据保证在原地图上存在S到T的 ...
- Python实现类似JavaScript 的Json对象
Python实现类似JavaScript 的Json对象 用过js的都知道 js中json也是一个对象,所以可以直接通过class.attr 取值,当attr不存在时也不会报错,那么Python可不可 ...
- 栈(C语言实现)
栈是一种线性数据结构,顺序可能是 LIFO(后进先出)或 FILO(先进先出). 堆栈主要有三个基本操作: 1.push,把元素压入栈 2.pop,从栈中弹出元素(同时从栈中移除),最后加入的第一个被 ...
- array_multisort 二维数组排序
用PHP自带array_multisort函数排序 <?php $data = array(); $data[] = array('volume' => 67, 'edition' ...
- windows10 conda2 使用caffe训练训练自己的数据
首先得到了https://blog.csdn.net/gybheroin/article/details/72581318系列博客的帮助.表示感激. 关于安装caffe已在之前的博客介绍,自用可行,h ...
- python---基础知识回顾(七)迭代器和生成器
前戏:迭代器和生成器 迭代: 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). Python的for循环不仅可以用在 ...
- 奇怪的C代码
; int ans = (++i)+(++i)+(++i); ans等于多少?我想大多数同学都会和我一样的认为: ans = 4 + 5 + 6 = 15. 而实际结果呢? - Linux下用gcc编 ...
- 20155301 2016-2017-2 《Java程序设计》第5周学习总结
20155301 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 1.1try.catch关键词,在用户不小心输入错误的时候,程序会出现错误信息,将代表错误的 ...
- 20155217 2016-2017-2 《Java程序设计》第4周学习总结
20155217 2016-2017-2 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 在java中,继承时使用extends关键字,private成员也会被继承,只不过子 ...