使用配置AutoFacManger的好處是不用我們像之前一樣寫一層注入一層,這樣自動注入只要我們命名規範的話,就可以實現不在用去Program中手動後注入
建立一個類裡邊寫
public class AutoFacManger : Autofac.Module { /// <summary> /// 自動注入 /// </summary> /// <param name="builder"></param> protected override void Load(ContainerBuilder builder) { //注入介面 var IRepository = Assembly.Load("Repository"); var Service = Assembly.Load("Service"); builder.RegisterAssemblyTypes(IRepository) .Where(t => t.Name.EndsWith("Repository")) .AsImplementedInterfaces();//自動去尋找實現的介面 builder.RegisterAssemblyTypes(Service) .Where(t => t.Name.EndsWith("Service")) .AsImplementedInterfaces();//自動去尋找實現的介面 } } }
在Program中配置
//使用AutoFac來接管原來的IOC和DI註冊AutoFac builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureContainer<ContainerBuilder>(builder => { builder.RegisterModule(new AutoFacManger()); });