U3DC.COM | 优三帝研究院

Menu

IoC框架:autofac (一)

Autofac是一个轻量级的依赖注入的框架,同类型的框架还有Spring.NET,Unity,Castle等。

Autofac的使用有一个非常让人郁闷的地方,就是服务器要求安装有Microsoft .NET Framework 4 KB2468871。该补丁的地址是:http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=3556 如果不安装,则运行程序会报如下错误:

具体信息可以到这里去查看:https://code.google.com/p/autofac/wiki/FrequentlyAskedQuestions

这篇文章以一个最简单的例子,开始Autofac的学习:

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            ContainerBuilder builder = new ContainerBuilder();
            builder.RegisterType();
            builder.RegisterType().As IPerson();
            using (IContainer container = builder.Build())
            {
                AutoFacManager manager = container.Resolve<AutoFacManager;();
                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、ContainerBuilder类型的作用

组件通过ContainerBuilder的对象注册。

2、组件

对象需要从组件中来获取,比如例子中的Worker类的实例就需要从组件中获取。

3、哪些实例可以作为组件

4、容器

ContainerBuilder的Build()方法可以创建容易,从容器的Resolve()方法能够获得对象。

5、为了指定组件服务是某一接口

As()方法将用于注册时之指定:builder.RegisterTye<TaskController>().As<TController>();
6、组件的依赖关系

组件的依赖关系主要通过接口实现,如Worker:IPerson

打赏
— 于 共写了1278个字
— 文内使用到的标签:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据