.net mvc使用Autofac实现依赖注入IOC最简单实例教程
深山老妖浏览:6522019-04-09 09:46:05本文累计收益:0我也要赚钱

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

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            ContainerBuilder builder = new ContainerBuilder();
            builder.RegisterType<AutoFacManager>();
            builder.RegisterType<Worker>().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、哪些实例可以作为组件

  • Lambda表达式
  • 一个类型
  • 一个预编译的实例
  • 实例类型所在的程序集

4、容器

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

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

As()方法将用于注册时之指定:builder.RegisterTye<TaskController>().As<TController>();

6、组件的依赖关系

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

 

评论列表
发表评论
+ 关注