集成 Autofac

Autofac 是.Net世界中最常用的依赖注入框架之一. 相比.Net Core标准的依赖注入库, 它提供了更多高级特性, 比如动态代理和属性注入.

安装 Autofac

所有的启动模板和示例都已经集成了 Autofac. 所以, 多数时候你无需手动安装这个包.

安装 Volo.Abp.Autofac nuget 包到你的项目 (对于一个多项目应用程序, 建议安装到可执行项目或者Web项目中.)

  1. Install-Package Volo.Abp.Autofac

然后为你的模块添加 AbpAutofacModule 依赖:

  1. using Volo.Abp.Modularity;
  2. using Volo.Abp.Autofac;
  3. namespace MyCompany.MyProject
  4. {
  5. [DependsOn(typeof(AbpAutofacModule))]
  6. public class MyModule : AbpModule
  7. {
  8. //...
  9. }
  10. }

最后, 配置 AbpApplicationCreationOptions 用 Autofac 替换默认的依赖注入服务. 根据应用程序类型, 情况有所不同.

ASP.NET Core 应用程序

如下所示, 在 Startup.cs 文件中调用 UseAutofac():

  1. public class Startup
  2. {
  3. public IServiceProvider ConfigureServices(IServiceCollection services)
  4. {
  5. services.AddApplication<MyWebModule>(options =>
  6. {
  7. //Integrate Autofac!
  8. options.UseAutofac();
  9. });
  10. return services.BuildServiceProviderFromFactory();
  11. }
  12. public void Configure(IApplicationBuilder app)
  13. {
  14. app.InitializeApplication();
  15. }
  16. }

控制台应用程序

如下所示, 在 AbpApplicationFactory.Create 中用options调用 UseAutofac() 方法:

  1. using System;
  2. using Microsoft.Extensions.DependencyInjection;
  3. using Volo.Abp;
  4. namespace AbpConsoleDemo
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. using (var application = AbpApplicationFactory.Create<AppModule>(options =>
  11. {
  12. options.UseAutofac(); //Autofac integration
  13. }))
  14. {
  15. //...
  16. }
  17. }
  18. }
  19. }