class Program
{
static void Main(string[] args)
{
IContainer container = Init();
Go(container); Console.WriteLine("========================"); ISchool a = container.Resolve<ISchool>();
a.FangXue(); Console.ReadKey();
}
static IContainer Init()
{
ContainerBuilder builder = new ContainerBuilder();
Assembly asm = Assembly.Load(Assembly.GetExecutingAssembly().GetName().Name);
builder.RegisterAssemblyTypes(asm).AsImplementedInterfaces().PropertiesAutowired().SingleInstance();
//SingleInstance()单例,共享同一个对象,PropertiesAutowired()属性自动注入
IContainer container = builder.Build();
return container;
}
static void Go(IContainer container)
{
IDogBLL schoolBll = container.Resolve<IDogBLL>();
schoolBll.Bark();
IDogBLL schoolBll2 = container.Resolve<IDogBLL>();
Console.WriteLine(schoolBll.Equals(schoolBll2));
}
}
public interface IDogBLL
{
void Bark();
}
public class DogBLL : IDogBLL
{
public void Bark()
{
Console.WriteLine("汪汪汪");
}
}
public interface ISchool
{
void FangXue();
}
public class School : ISchool
{
public IDogBLL dogBll { get; set; }
public void FangXue()
{
dogBll.Bark();
Console.WriteLine("放学了");
}
}

 Autofac.Mvc

        private void AutoFacMvc()
{
//using Autofac.Integration.Mvc;
ContainerBuilder builder = new ContainerBuilder();
// 把当前的 程序集中的 Controller 都注册
builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();
// 不要忘了.PropertiesAutowired()
Assembly asm = Assembly.Load("TestService"); //获取所有相关类库的程序集
builder.RegisterAssemblyTypes(asm).Where(e => !e.IsAbstract).AsImplementedInterfaces().PropertiesAutowired(); // 把当前的 程序集中的 所有类 都注册
builder.RegisterAssemblyTypes(typeof(MvcApplication).Assembly).PropertiesAutowired(); Autofac.IContainer container = builder.Build();
//注册系统级别的 DependencyResolver,
//这样当 MVC框架创建Controller等对象的时候都是管Autofac要对象。
DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); //!!!
}

 Autofac.Mvc单独注册

            var test = DependencyResolver.Current.GetService<TestHelper>();
var res = test.GetDateTime();

不在Mvc线程里单独注册

                var container = AutofacDependencyResolver.Current.ApplicationContainer;
using (container.BeginLifetimeScope())
{
var citySvc = container.Resolve<ICityService>();
}

Autofac 控制反转的更多相关文章

  1. AutoFac控制反转

    一.AutoFac介绍 Autofac是.NET里IOC(Inversion of Control,控制反转)容器的一种,同类的框架还有Spring.NET,Unity,Castle等.可以通过NuG ...

  2. AutoFac控制反转 转载https://blog.csdn.net/u011301348/article/details/82256791

    一.AutoFac介绍 Autofac是.NET里IOC(Inversion of Control,控制反转)容器的一种,同类的框架还有Spring.NET,Unity,Castle等.可以通过NuG ...

  3. AutoFac (控制反转IOC 与依赖注入DI)

    重要的参考资料http://www.cnblogs.com/xdp-gacl/p/4249939.html 谈谈对Spring IOC的理解 IOC概念(很重要) 项目 先引入AutoFac 和Aut ...

  4. 如何在asp.net mvc 中使用Autofac 控制反转(Ioc)

    前言 最近看了一些关于Ioc方面的开源项目,里面的类跳来转去,看的迷迷糊糊的.项目里根本不需要这么“复杂的”设计,只需简单完成Ico,达到解耦的目的,并且能高效的完成项目.于是参考autofac的官网 ...

  5. C#开发微信门户及应用(42)--使用Autofac实现微信接口处理的控制反转处理

    在很多情况下,我们利用IOC控制反转可以很方便实现一些接口的适配处理,可以在需要的时候切换不同的接口实现,使用这种方式在调用的时候,只需要知道相应的接口接口,具体调用哪个实现类,可以在配置文件中动态指 ...

  6. IoC实践--用Autofac实现MVC5.0的IoC控制反转方法

    Autofac是一个.net平台下发性能还不错的IoC框架,利用它可以实现依赖注入和控制反转,使自己的软件模块之间的耦合性大大降低,让软件扩展.维护更加容易.控制反转(Inversion of Con ...

  7. 【AutoFac】依赖注入和控制反转的使用

    在开始之前首先解释一下我认为的依赖注入和控制反转的意思.(新手理解,哪里说得不正确还请指正和见谅) 控制反转:我们向IOC容器发出获取一个对象实例的一个请求,IOC容器便把这个对象实例“注入”到我们的 ...

  8. ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下

    先简单了解一这个几个 名词的意思. 控制反转(IOC) 依赖注入(DI) 并不是某种技术. 而是一种思想.一种面向对象编程法则 什么是控制反转(IOC)?  什么是依赖注入(DI) 可以点击下面链接 ...

  9. Git使用总结 Asp.net生命周期与Http协议 托管代码与非托管代码的区别 通过IEnumerable接口遍历数据 依赖注入与控制反转 C#多线程——优先级 AutoFac容器初步 C#特性详解 C#特性详解 WPF 可触摸移动的ScrollViewer控件 .NET(C#)能开发出什么样的APP?盘点那些通过Smobiler开发的移动应用

    一,原理 首先,我们要明白Git是什么,它是一个管理工具或软件,用来管理什么的呢?当然是在软件开发过程中管理软件或者文件的不同版本的工具,一些作家也可以用这个管理自己创作的文本文件,由Linus开发的 ...

随机推荐

  1. Wireshark 抓包遇到 you don’t have permission to capture on that device mac 错误的解决方案

    Wireshark 抓包遇到 you don’t have permission to capture on that device mac 错误的解决方案 上次有篇博客讲了如何利用wireshark ...

  2. 模块化开发(二)--- seaJs入门学习

    SeaJS是一个基于CMD模块定义规范实现一个模块系统加载器   [CMD规范](https://github.com/cmdjs/specification/blob/master/draft/mo ...

  3. Codeforces Round #272 (Div. 2)C. Dreamoon and Sums 数学推公式

    C. Dreamoon and Sums   Dreamoon loves summing up something for no reason. One day he obtains two int ...

  4. 洛谷 P1498 南蛮图腾 —— 模拟

    题目:https://www.luogu.org/problemnew/show/P1498 大约一年前该做的题...现在来填一下坑: 然而不怎么会模拟!还滚去看TJ了: 就是翻倍复制: \ 这个符号 ...

  5. Flink编程练习

    目录 1.wordcount 2.双流警报EventTime 3.持续计数stateful + timer + SideOutputs 4.一定时间范围内的极值windowfunction + che ...

  6. E20170919-hm

    infinity   n. <数>无穷大; 无限的时间或空间;

  7. [Swift通天遁地]三、手势与图表-(8)制作股市中常用的蜡烛图表

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. flex中align-content属性

    在flex弹性盒模型中align-content属性控制容器内多行在交叉轴上的排列方式 默认值:stretch 可用值: 属性值:flex-start 属性值:flex-end 属性值:center ...

  9. gerrit项目配置

    1. 相关约定说明: 1.1 gerrit服务器ip地址:192.168.130.10 1.2 gerrit服务器端用户名:gerrit 1.3 gerrit用户端管理员:admin 1.4 ssh端 ...

  10. post提交表单的数据查看方式(不是很理解,但要会看,可以找人商讨下,比如崔老师,自己再看一遍HTTP基础)