demo
1 var container = new ContainerBuilder(); // 建立容器 2 container.RegisterType<DbRespository>(); // 在容器中注册信息 3 container.RegisterType<SqlServerRespository>().AsImplementedInterfaces(); 4 //container.RegisterType<RedisRespository>().AsImplementedInterfaces(); 5 //container.RegisterInstance(new RedisRespository()).AsImplementedInterfaces(); 6 7 // 从App.config 文件进行读取 8 container.RegisterModule(new ConfigurationSettingsReader("autofac")); 9 10 using (var obj = container.Build()) 11 { 12 var manager = obj.Resolve<DbRespository>(); 13 manager.Execute(); 14 } 15 Console.Read();
在外部文件App.config进行配置
1 <configSections> 2 <section name="autofac" type="Autofac.Configuration.SectionHandler,Autofac.Configuration" /> 3 </configSections> 4 <startup> 5 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 6 </startup> 7 8 <autofac defaultAssembly="AutofacDemo"> 9 <components> 10 <component type="AutofacDemo.OracleRespository, AutofacDemo" service="AutofacDemo.IRespository" /> 11 </components> 12 </autofac>
通过以上代码,不难看出。建立的container容器,通过Autofac引入外部文件,然后完成IOC的反转控制。
跳到内部你会发现,其实内部就是通过反射生成对应的类,完成外部的控制。
看来,以后得深入研究一下反射了。。。
原文:http://www.cnblogs.com/ArrowTip/p/autofac.html