1.winform用法:

nuget安装autofac

public interface ILog
{
bool Log(string msg);
}
public class TXTLogger : ILog
{
public bool Log(string msg)
{
Console.WriteLine(msg + " saved in file log.log");
return true;
}
}
public class DBLogger : ILog
{
public bool Log(string msg)
{
Console.WriteLine(msg + " saved in mssqlserver");
return true;
}
} public class UserService
{
public ILog log;
public UserService(ILog ilog) //构造函数注入
{
log = ilog;
} public bool AddUser()
{
log.Log("insert user succeed ,userId is :1");
return true;
}
}
     Autofac.IContainer container;

        private void Form1_Load(object sender, EventArgs e)
{//注册
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<DBLogger>().As<ILog>();
builder.RegisterType<TXTLogger>().As<ILog>();//后注册的会覆盖之前注册的
builder.RegisterType<UserService>();
container = builder.Build(); Test();
    } void Test()
{

var service = container.Resolve<UserService>(); //解析;并没有实例化new UserService也没有传入构造函数参数,autofac自动注入了
if (service!=null)
{
    var result = service.AddUser(); //输出insert user succeed ,userId is :1 saved in file log.log
}

        }

2.mvc用法:

安装 autofac和autofac.mvc5:

global.asax.cs中

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);        //mvc注册 参考:http://www.w2*bc.com/article/180590
ContainerBuilder builder = new ContainerBuilder(); builder.RegisterControllers(Assembly.GetExecutingAssembly()).AsSelf().PropertiesAutowired();
builder.RegisterType<DBLogger>().As<ILog>().InstancePerLifetimeScope();
builder.RegisterType<TXTLogger>().As<ILog>().InstancePerLifetimeScope();//后注册的会覆盖之前注册的
builder.RegisterType<UserService>().InstancePerLifetimeScope();
var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); //webapi注册
//WebApi Register
//builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).AsSelf().PropertiesAutowired();
//builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration);
/builder.RegisterWebApiModelBinderProvider();
}

controller中调用Test方法

        public static void Test()
{
//var log = DependencyResolver.Current.GetService<ILog>();
//var result = log.Log("test msg"); var service = DependencyResolver.Current.GetService<UserService>();
if (service != null)
{
service.AddUser(); //输出insert user succeed ,userId is :1 saved in file log.log
} }

参考:http://www.cnblogs.com/hkncd/archive/2012/11/21/2780041.html

参考:http://www.w2b*c.com/article/180590

3.属性注入:

public class AA
{
public BB bb;
public AA()
{
} public void TestAA()
{
bb.TestBB();
}
}
public class BB
{
public void TestBB()
{
Console.WriteLine("TestBB Executed!");
}
}
       

       ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<BB>();
builder.Register(c => new AA() { bb = c.Resolve<BB>() }); //属性注入
var container = builder.Build();
var a = container.Resolve<AA>();
a.TestAA(); //输出:TestBB Executed!

From:http://www.cnblogs.com/xuejianxiyang/p/7064974.html

ioc autofac简单示例的更多相关文章

  1. Autofac 简单示例

    公司不用任何IOC,ORM框架,只好自己没事学学. 可能有些语言描述的不专业 希望能有点用 namespace Autofac { class Program { //声明一个容器 private s ...

  2. 基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)

    一.前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知.随着 ...

  3. spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例

    下面开始项目的搭建 使用 Java EE - Eclipse 新建一 Dynamic Web Project Target Runtime 选 Apache Tomcat 7.0(不要选 Apache ...

  4. AutoFac简单入门

    AutoFac是.net程序下一个非常灵活易用,且功能强大的DI框架,本文这里简单的介绍一下使用方法. 安装: Install-Package Autofac 简单的示例: static void M ...

  5. 依赖注入(二)Autofac简单使用

    Autofac简单使用 源码下载传上源码,终于学会传文件了. 首先 还是那句话:“不要信我,否则你死得很惨!”. C#常见的依赖注入容器 IoC in .NET part 1: Autofac IoC ...

  6. Linux下的C Socket编程 -- server端的简单示例

    Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...

  7. C# 构建XML(简单示例)

    C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...

  8. 根据juery CSS点击一个标签弹出一个遮罩层的简单示例

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  9. ACEXML解析XML文件——简单示例程序

    掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...

随机推荐

  1. ORACLE的WITH语句的一个疑惑

    使用WITH语句,更新表数据,不行: WITH VN AS ( SELECT T.ID, T.NODE_ID, N.NODE_TYPE, N.NODE_NAME, T.NODE_LEVEL, T.RN ...

  2. abp部署端口和域名映射配置

    前引 apb部署 后端服务9900端口,域名访问地址是:http://nihao-api.hellow.com: 前端4200端口,域名访问地址是:http://nihao.hellow.com: 前 ...

  3. json处理工具类

    需要的jar包 <!-- Jackson Json处理工具包 --><dependency><groupId>com.fasterxml.jackson.core& ...

  4. 论文阅读 | CornerNet:Detecting Objects as Paired Keypoints

    论文地址:https://arxiv.org/abs/1808.01244v1 论文代码:https://github.com/umich-vl/CornerNet 概述 CornerNet是一篇发表 ...

  5. element-ui table多选CheckBox参数解析

    element-UI里的table表格与多选框CheckBox的组合很常用,官网也给了很多参数,自己总结了一下,方便日后使用 1.简易用法,没有附加的功能 要在表格里使用CheckBox很简单,只需设 ...

  6. python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据

    python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据 最近工作太忙了,有一个星期没有更新文章了,本来这一期打算分享一些对龙虎榜数据的分析结果的,现在还没有把数据内的价值很好 ...

  7. n皇后问题(分析)

    这道题需要用到回溯算法,现在在这里先简单的介绍一下这个算法: 回溯算法也叫试探法,它是一种系统地搜索问题的解的方法.回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试.用回溯 ...

  8. Python爬虫抓取某音乐网站MP3(下载歌曲、存入Sqlite)

    最近右胳膊受伤,打了石膏在家休息.为了实现之前的想法,就用左手打字.写代码,查资料完成了这个资源小爬虫.网页爬虫, 最主要的是协议分析(必须要弄清楚自己的目的),另外就是要考虑对爬取的数据归类,存储. ...

  9. c++ 网络编程(三) LINUX/windows 进程间的通信原理与实现代码 基于多进程的服务端实现

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9613027.html 锲子:进程与线程是什么,他们的区别在哪里: 1 进程概念 进程是程序的一 ...

  10. java里面如何提升编写速度

    一般情况下,编写程序,是在规定的时间内,并且在一段时间内很好的按成,那么就必须要套用现成的东西.在一个新的功能中,如何调用现成的东西呢,那么就是使用第三方包或者是使用自己总结的代码库.接来下是自己看到 ...