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<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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM