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 ...
随机推荐
- linux和windows双系统时间错误解决方法
转自http://www.2cto.com/os/201204/126212.html windows时间会慢8小时,原因: 两个概念: UTC即Universal Time Coordinated, ...
- scala中java并发编程
Runnable/Callable 线程(Thread) Executors/ExecutorService Future 线程安全问题 示例:搜索引擎 解决方案 Runnable/Callable ...
- 随机数生成类Random用法
一.构造方法: Random() 创建一个新的随机数生成器. Random(long seed) 使用单个 long 种子创建一个新的随机数生成器. 无参构造方 ...
- 《JS权威指南学习总结--第八章 函数》
内容要点: 一.JS函数是参数化的:函数的定义会包括一个称为形参的标识符列表,这些参数在函数体中像局部变量一样工作.函数调用会为形参提供实参的值.函数使用它们实参的值来计算返回值,成为该函数调用表达式 ...
- 火狐中,设置align="center"失效的解决方法
如下: <img align="center" style="vertical-align:top"></img> 只需要加上: ver ...
- ggplot2 分面相关设置(facet)
分面设置在ggplot2应该也是要经常用到的一项画图内容,在数据对比以及分类显示上有着极为重要的作用, 下面是两个经常要用到的分面函数. facet_wrap(facets, nrow = NULL, ...
- POJ 1082 Calendar Game(找规律博弈)
传送门 以下复制自此处:http://www.xuebuyuan.com/2028180.html 博弈论题目可以用寻找必败状态的方法解决. 第一个必败状态是2001.11.04.由此可以推出其他任何 ...
- Haskell开始
一.安装 操作系统为centos,为了安装最新的Haskell编译器,不使用命令 yum install ghc 1.安装ghc 使用wget下载ghc,命令如下(注意系统是centos6.7) $ ...
- 8.Hibernate的多对多关联映射
1.创建如下数据库脚本 --1.1 项目表 create table PROJECT ( proid ) not null, proname ) ) ; --1.2 项目表主键 alter table ...
- awk 中 FS的用法
在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {pr ...