.Net Core + Autofac

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

 

posted @ 2021-06-25 11:24  Kevin-xk  阅读(170)  评论(0)    收藏  举报