對(duì)于這個(gè)容器注入,個(gè)人也不是很熟悉,很多還不懂,只會(huì)基本的操作,幾天把它記錄下來(lái),相信不久的自己會(huì)更上一層樓
下面記錄下應(yīng)用的流程
步驟:
1.添加應(yīng)用

2.重寫(xiě)工廠(chǎng)(這里講的是常用的構(gòu)造方法注入方式)

1 public class CreateAutofacFactory : DefaultControllerFactory 2 { 3 public override IController CreateController(RequestContext requestContext, string controllerName) 4 { 5 //獲取容器 6 IContainer ic = CreateControllers.CreateController().Icontainer; 7 //獲取控制器類(lèi)型 8 Type t = this.GetControllerType(requestContext, controllerName); 9 //從容器中解析出對(duì)象10 return ic.Resolve(t) as IController;11 }12 }View Code
1 public class CreateControllers 2 { 3 PRivate CreateControllers() { } 4 private static CreateControllers createController; 5 public static CreateControllers CreateController() 6 { 7 if (createController == null) 8 createController = new CreateControllers(); 9 return createController;10 }11 private IContainer iContainer { get; set; }12 public IContainer Icontainer13 {14 get 15 {16 if (iContainer == null)17 {18 ContainerBuilder cb = new ContainerBuilder();19 //用代碼注冊(cè)類(lèi)型20 //cb.RegisterType<StudentDao>().As<IStudentDao>();21 //cb.RegisterType<StudentManager>().As<IStudentManager>();22 //cb.RegisterType<HomeController>();23 24 //從配置文件注冊(cè)類(lèi)型25 cb.RegisterModule(new ConfigurationSettingsReader("autofac"));26 iContainer = cb.Build();//創(chuàng)建容器27 }28 return iContainer;29 }30 }31 }View Code3.啟動(dòng)(更換)工廠(chǎng)

1 public class Mvcapplication : System.Web.HttpApplication 2 { 3 protected void Application_Start() 4 { 5 AreaRegistration.RegisterAllAreas(); 6 7 WebApiConfig.Register(GlobalConfiguration.Configuration); 8 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 9 RouteConfig.RegisterRoutes(RouteTable.Routes);10 BundleConfig.RegisterBundles(BundleTable.Bundles);11 12 //換ControllerFactory(服務(wù)器一啟動(dòng)就更換工廠(chǎng))13 ControllerBuilder.Current.SetControllerFactory(new CreateAutofacFactory());14 }15 }View Code
4.添加配置文件

1 <configSections> 2 <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 3 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 4 5 <!--在配置文件中添加配置節(jié)點(diǎn) name是配置節(jié)點(diǎn)的標(biāo)簽名 6 type是讀取配置節(jié)點(diǎn)內(nèi)容的類(lèi) 格式:命名空間名.類(lèi)名,程序集名--> 7 <section name="autofac" type="Autofac.Configuration.SectionHandler, Autofac.Configuration"/> 8 9 </configSections>10 11 <autofac>12 <components>13 <component type="Winning.Tjgi.Backstage3G.UI.Controllers.HomeController,Winning.Tjgi.Backstage3G.UI"14 />15 <component16 type="test.Dal.UserDao,test.Dal"17 service="test.IDal.IUserDao,test.IDal"/>18 <component19 type="test.Bll.UserManager,test.Bll"20 service="test.IBll.IUserManager,test.IBll" />21 </components>22 </autofac>View Code
5.構(gòu)造函數(shù)

1 IUserManager uMan = null;2 public HomeController(IUserManager uMan)3 {4 this.uMan = uMan;5 } View Code五步走起,如果過(guò)程出錯(cuò)的話(huà)基本上都是配置文件配置出錯(cuò),還有就是經(jīng)常忘記更新dll類(lèi)庫(kù),在這里要建議下把類(lèi)庫(kù)的輸出路徑改成到UI項(xiàng)目里,經(jīng)常動(dòng)手才會(huì)記憶深刻,一直在努力中,希望能走出自己的道路,雖然脆弱,卻不退縮。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注