“控制反轉(zhuǎn)(Inversion of Control,英文縮寫為IoC),對(duì)象在被創(chuàng)建的時(shí)候,由一個(gè)調(diào)控系統(tǒng)內(nèi)所有對(duì)象的外界實(shí)體,將其所依賴的對(duì)象的引用,傳遞給它。也可以說,依賴被注入到對(duì)象中。所以,控制反轉(zhuǎn)是,關(guān)于一個(gè)對(duì)象如何獲取他所依賴的對(duì)象的引用,這個(gè)責(zé)任的反轉(zhuǎn)。
using Autofac;using AutoFacStudy.Model;using AutoFacStudy.Service;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace AutoFacStudy
{classProgram{privatestaticIContainer Container {get;set;}staticvoidMain(string[] args){var builder =newContainerBuilder();// Usually you're only interested in exposing the type// via its interface:builder.RegisterType<OnceStudy>().AsSelf().As<IService>();builder.RegisterType<TwiceStudy>().AsSelf();// However, if you want BOTH services (not as common)// you can say so://builder.RegisterType<OnceStudy>().AsSelf().As<IService>();Container = builder.Build();var scope = Container.BeginLifetimeScope();var once = scope.Resolve<OnceStudy>();var twice = scope.Resolve<TwiceStudy>();once.StudyAutoFac();twice.StudyAutoFac();// The WriteDate method is where we'll make use// of our dependency injection. We'll define that// in a bit.//OnceStudy os = new OnceStudy();Console.ReadKey();}}}