using Autofac;
using Bunny.Common.Context.Database;
using Bunny.Service.IService;
using Bunny.Service.IService.Service;
using Microsoft.AspNetCore.Mvc;
namespace Bunny.WebApi.Configuration;
public static class AddAutofacConfig
{
public static void BuildContainer(ContainerBuilder builder)
{
// 异步方式创建数据库
new EfCoreContext().Database.EnsureCreatedAsync();
// 如果不在在 Controller 层写构造函数可以打开这个,自动完成注入
var controllerBaseType = typeof(ControllerBase);
builder.RegisterAssemblyTypes(typeof(Program).Assembly)
.Where(t => controllerBaseType.IsAssignableFrom(t) && t != controllerBaseType)
.PropertiesAutowired(); //支持属性注入
// 系统相关注入
SystemRegisterType(builder);
// 服务相关注入
ServiceRegisterType(builder);
}
///
/// 系统相关注入
///
/// ContainerBuilder
private static void SystemRegisterType(ContainerBuilder builder)
{
builder.RegisterType();
}
///
/// 服务相关注入
///
/// ContainerBuilder
private static void ServiceRegisterType(ContainerBuilder builder)
{
// 注入Service服务
builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
}
}