[英]inject all services in startup.cs, .net core, overloaded
这是一个更普遍的问题。
但是我有一个关于在 startup.cs 中注入服务的问题:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers(opt =>
{
var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
opt.Filters.Add(new AuthorizeFilter(policy));
})
.AddFluentValidation(config =>
{
config.RegisterValidatorsFromAssemblyContaining<Create>();
});
services.AddApplicationServices(Configuration);
services.AddIdentityServices(Configuration);
}
所以无论如何我将服务拆分到其他文件中:
public static class StartupExtensionClass
{
public static IServiceCollection AddApplicationServices(this IServiceCollection services,
IConfiguration Configuration)
{
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "API", Version = "v1" });
});
services.AddDbContext<DataContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddCors(opt =>
{
opt.AddPolicy("CorsPolicy", policy =>
{
policy.AllowAnyMethod().AllowAnyHeader().WithOrigins("http://localhost:3000");
});
});
services.AddMediatR(typeof(List.Handler).Assembly);
services.AddAutoMapper(typeof(MappingProfiles).Assembly);
services.AddScoped<IUserAccessor, UserAccessor >();
services.AddScoped<IPhotoAccessor, PhotoAccessor>();
services.Configure<CloudinarySettings>(Configuration.GetSection("Cloudinary"));
return services;
}
但是例如,如果您有数百个服务。 这不会在启动阶段使应用程序超载吗?
因为所有的服务都会在一开始就初始化。
有没有办法在直接调用某些服务时初始化它们。
喜欢懒加载
谢谢
我相信您只是在设置运行时将使用的内容,当要求指定类型的 class 时……您不会立即创建类。 因此,如果您的应用程序刚刚启动,但您从未向它发出任何请求,那么就不会无缘无故地实例化 100 个类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.