繁体   English   中英

在startup.cs中注入所有服务,.net核心,重载

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM