码迷,mamicode.com
首页 > 其他好文 > 详细

【Autofac 4.0官方文档翻译】开始

时间:2016-05-20 19:19:44      阅读:416      评论:0      收藏:0      [点我收藏+]

标签:

开始

将Autofac集成到应用程序的基本模式是:

  • 用控制反转的思想构建你的应用程序
  • 添加Autofac引用
  • 在应用启动的地方...
  • 创建一个ContainerBuilder对象
  • 注册组件
  • 建立容器并保存以备以后使用
  • 在程序执行期间...
  • 为容器创建作用域
  • 从作用域获取组件的实例

本开始向导通过一个简单的控制台程序来向你介绍以上步骤。一旦有了一定的基础,你可以查看wiki的其他部分来了解更多高级用法以及对于WCF, ASP.NET和其它应用类型的集成方法

构建应用程序

控制反转背后的思想是,在类的构造期间传递依赖而不是在应用程序里将这些类绑在一起让类自己创建他们的依赖。如果想了解更多,你可以查看Martin Fowler的一篇解释依赖注入/控制反转的优秀文章

我们的示例程序中,定义一个输入当前日期的类。然而我们不想将这个类同控制台绑定,因为我们想在以后控制台不可用的条件下也能测试这个类。

我们尽量使用抽象机制来写这个类,这样如果我们想要将其替换成一个输出明天日期的版本将会很容易实现。

我们将这样做:

技术分享
using System;
namespace DemoApp
{
    // This interface helps decouple the concept of
    // "writing output" from the Console class. We
    // don‘t really "care" how the Write operation
    // happens, just that we can write.
    public interface IOutput
    {
        void Write(string content);
    }
    // This implementation of the IOutput interface
    // is actually how we write to the Console. Technically
    // we could also implement IOutput to write to Debug
    // or Trace... or anywhere else.
    public class ConsoleOutput : IOutput
    {
        public void Write(string content)
        {
            Console.WriteLine(content);
        }
    }
    // This interface decouples the notion of writing
    // a date from the actual mechanism that performs
    // the writing. Like with IOutput, the process
    // is abstracted behind an interface.
    public interface IDateWriter
    {
        void WriteDate();
    }
    // This TodayWriter is where it all comes together.
    // Notice it takes a constructor parameter of type
    // IOutput - that lets the writer write to anywhere
    // based on the implementation. Further, it implements
    // WriteDate such that today‘s date is written out;
    // you could have one that writes in a different format
    // or a different date.
    public class TodayWriter : IDateWriter
    {
        private IOutput _output;
        public TodayWriter(IOutput output)
        {
            this._output = output;
        }
        public void WriteDate()
        {
            this._output.Write(DateTime.Today.ToShortDateString());
        }
    }
}
View Code

 

【Autofac 4.0官方文档翻译】开始

标签:

原文地址:http://www.cnblogs.com/chenghyi/p/5513083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!