簡體   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