50 lines
1.7 KiB
C#
50 lines
1.7 KiB
C#
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.EnsureCreated();
|
|
|
|
// 如果不在在 Controller 层写构造函数可以打开这个,自动完成注入
|
|
var controllerBaseType = typeof(ControllerBase);
|
|
builder.RegisterAssemblyTypes(typeof(Program).Assembly)
|
|
.Where(t => controllerBaseType.IsAssignableFrom(t) && t != controllerBaseType)
|
|
.PropertiesAutowired(); //支持属性注入
|
|
|
|
// 系统相关注入
|
|
SystemRegisterType(builder);
|
|
// 服务相关注入
|
|
ServiceRegisterType(builder);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 系统相关注入
|
|
/// </summary>
|
|
/// <param name="builder">ContainerBuilder</param>
|
|
private static void SystemRegisterType(ContainerBuilder builder)
|
|
{
|
|
builder.RegisterType<EfCoreContext>();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 服务相关注入
|
|
/// </summary>
|
|
/// <param name="builder">ContainerBuilder</param>
|
|
private static void ServiceRegisterType(ContainerBuilder builder)
|
|
{
|
|
// 注入Service服务
|
|
builder.RegisterType<BaseService>().As<IBaseService>();
|
|
builder.RegisterType<UserService>().As<IUserService>();
|
|
builder.RegisterType<RedisOptionService>().As<IRedisOptionService>();
|
|
builder.RegisterType<JobService>().As<IJobService>();
|
|
builder.RegisterType<MinioService>().As<IMinioService>();
|
|
}
|
|
} |