IoC容器Autofac正篇之简单实例(四)
先上一段代码。

namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
ContainerBuilder builder = new ContainerBuilder();//容器构造器 组件中的类型通过此对象注册到容器中
builder.RegisterType<AutoFacManager>();//注册类型
builder.RegisterType<Worker>().As<IPerson>();//注册类型且用as方法指定此类型是IPerson接口
using (IContainer container = builder.Build())//build方法创建容器
{
AutoFacManager manager = container.Resolve<AutoFacManager>();//通过resolve方法取得对象
manager.Say();
}
Console.ReadKey();
}
}
public interface IPerson
{
void Say();
}
public class Worker : IPerson
{
public void Say()
{
Console.WriteLine("我是一个工人!");
}
}
public class Student : IPerson
{
public void Say()
{
Console.WriteLine("我是一个学生!");
}
}
public class AutoFacManager
{
IPerson person;
public AutoFacManager(IPerson MyPerson)
{
person = MyPerson;
}
public void Say()
{
person.Say();
}
}
}

以上例子,是一个最简单的例子,输出如下:

总结:
1.明确autofac的作用:简单说,自动创建程序所依赖对象的实例,解除程序中的强依赖。(如Program类和AutoFacManager类)
2.思考:它何时帮你创建?在你需要使用这个对象的时候也就是获取这个对象即resolve时。
创建的前提是什么?你已经向autofac注册了这个对象所依赖的资源(类型注册)和(类型关联),autofac会进行匹配。
可学习的实例:http://www.cnblogs.com/liping13599168/archive/2011/07/16/2108209.html 引入配置文件
IoC容器Autofac正篇之简单实例(四)的更多相关文章
- IoC容器Autofac正篇之简单实例
先上一段代码. namespace ConsoleApplication3 { class Program { static void Main(string[] args) { ContainerB ...
- IoC容器Autofac正篇之类型注册(四)
Autofac类型注册 类型注册简单的从字面去理解就可以了,不必复杂化,只是注册的手段比较丰富. (一)类型/泛型注册 builder.RegisterType<Class1>(); 这种 ...
- IoC容器Autofac正篇之类型注册(五)
Autofac类型注册 类型注册简单的从字面去理解就可以了,不必复杂化,只是注册的手段比较丰富. (一)类型/泛型注册 builder.RegisterType<Class1>(); 这种 ...
- IoC容器Autofac正篇之依赖注入(六)
依赖注入,这个专业词我们可以分为两个部分来理解: 依赖,也就是UML中描述事物之间关系的依赖关系,依赖关系描述了事物A在某些情况下会使用到事物B,事物B的变化会影响到事物A: 注入,医生通过针头将药物 ...
- IoC容器Autofac正篇之依赖注入(七)
依赖注入,这个专业词我们可以分为两个部分来理解: 依赖,也就是UML中描述事物之间关系的依赖关系,依赖关系描述了事物A在某些情况下会使用到事物B,事物B的变化会影响到事物A: 注入,医生通过针头将药物 ...
- IoC容器Autofac正篇之类型关联(服务暴露)(七)
类型关联 类型关联就是将类挂载到接口(一个或多个)上去,以方便外部以统一的方式进行调用(看下例). 一.As关联 我们在进行手动关联时,基本都是使用As进行关联的. class Program { s ...
- IoC容器Autofac正篇之类型关联(服务暴露)(八)
类型关联 类型关联就是将类挂载到接口(一个或多个)上去,以方便外部以统一的方式进行调用(看下例). 一.As关联 我们在进行手动关联时,基本都是使用As进行关联的. 1 2 3 4 5 6 7 8 ...
- IoC容器Autofac正篇之解析获取(五)
解析获取的方式有如下几种: Resolve class Program { static void Main(string[] args) { var builder = new ContainerB ...
- IoC容器Autofac正篇之解析获取(六)
解析获取的方式有如下几种: Resolve class Program { static void Main(string[] args) { var builder = new ContainerB ...
随机推荐
- mongodb部署单节点(一)
部署包:mongodb-linux-x86_64-rhel55-3.0.2.tgz(百度云盘下载地址:http://pan.baidu.com/s/1jIQAGlw 密码:l7pf) 第一步:上传该文 ...
- Arrays.toString(a)--->将数组a的值转换为字符串
Arrays.toString(数组)是java内置类Arrays类的一个方法,具体查Api可知.因为数组是不可直接输出的,它的作用是将数组转换为字符串.其实用for循环也是可以做到的,只不过比for ...
- 复习i++和++j
一,新建一个Default.aspx页面 在Default.aspx.cs
- 《Mastering Opencv ...读书笔记系列》车牌识别(I)
http://blog.csdn.net/jinshengtao/article/details/17883075/ <Mastering Opencv ...读书笔记系列>车牌识别(I ...
- Apple 移动设备绑定动态生成元素点击事件$(document).on('click',element,callback)失效解决方法
今天在工作中刚接触到了微信社区相关的开发工作,测试的时候发现,动态生成元素的点击事件在andriod设备上可以触发,而在apple移动设备上却无法触发.好奇的我赶紧百度了下,很快就在stackover ...
- mac下安装composer
打开命令后 cd /usr/local/bin 然后执行 curl -sS https://getcomposer.org/installer | php 接下来 sudo mv composer.p ...
- Rancher安装使用
官网 http://docs.rancher.com/rancher/latest/en/quick-start-guide/#add-hosts 安装步骤: 1 Start up a Linux m ...
- 转:Delphi中destroy, free, freeAndNil, release用法和区别
http://blog.sina.com.cn/s/blog_44fa172f0101cur1.html 1)destroy:虚方法 释放内存,在Tobject中声明为virtual,通常是在其子类中 ...
- LeetCode OJ 1. Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...
- Payoneer官网注册教程,免费申请美国银行账号
在我搞网赚项目的过程中,碰到境外收款付款的问题,起初我用Paypal贝宝,手续费高得惊人!相信做电商外贸的朋友深有体会.幸而发现了Paypal替代产品Payoneer,注册简单,手续费低,还有中文网站 ...