Enviroment:
.Net(5.0)
Autofac(6.2.0)
Autofac.Configuration(6.0.0)
Autofac.Extensions.DependencyInjection(7.1.0)
1. first intall follow packages
2. use autofac in 'Program.cs' file to replace original IOC of .net core
3. add ConfigureContainer methord in startup,
4. add autofac.json file
{ "defaultAssembly": "AutofacService", "components": [ { "type": "AutofacService.RemoteLogger, AutofacService", "services": [ { "type": "AutofacIService.ISimpleLogger,AutofacIService" } ], "injectProperties": true } ] }
5. register configuration module in startup
public void ConfigureContainer(ContainerBuilder builder) { //builder.RegisterType<SimpleLogger>().As<ISimpleLogger>().InstancePerLifetimeScope(); ////register a generic type like Respository<> //builder.RegisterGeneric(typeof(DatabaseExtension<>)).As(typeof(IDatabaseExtension<>)).InstancePerLifetimeScope(); //var assemblyIService = Assembly.Load("autofac_demo.IService"); //var assemblyService = Assembly.Load("autofac_demo.Service"); //builder.RegisterAssemblyTypes(assemblyIService, assemblyService).Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces(); //load config json var config = new ConfigurationBuilder().Add(new JsonConfigurationSource() { Path = "Config/autofac.json", Optional = false, ReloadOnChange = true }); builder.RegisterModule(new ConfigurationModule(config.Build())); //builder.Build(); }
6. test successful