net core 在startup以外的地方怎么取到iservicecollection
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了net core 在startup以外的地方怎么取到iservicecollection相关的知识,希望对你有一定的参考价值。
在android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。 ... 参考技术A 共享出去.ASP.NET Core Web API中Startup的使用技巧
Startup类和服务配置
STARTUP CLASS AND THE SERVICE CONFIGURATION
在 Startup
类中,有两个方法:ConfigureServices
是用于服务注册,Configure
方法是向应用程序的请求管道中添加中间件。
因此,最好的方式是保持 ConfigureServices
方法简洁,并且尽可能地具有可读性。当然,我们需要在该方法内部编写代码来注册服务,但是我们可以通过使用 扩展方法
来让我们的代码更加地可读和可维护。
例如,让我们看一个注册 CORS 服务的不好方式:
public void ConfigureServices(IServiceCollection services) { services.AddCors(options => { options.AddPolicy("CorsPolicy", builder => builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials()); }); }
尽管这种方式看起来挺好,也能正常地将 CORS 服务注册成功。但是想象一下,在注册了十几个服务之后这个方法体的长度。
这样一点也不具有可读性。
一种好的方式是通过在扩展类中创建静态方法:
public static class ServiceExtensions { public static void ConfigureCors(this IServiceCollection services) { services.AddCors(options => { options.AddPolicy("CorsPolicy", builder => builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials()); }); } }
然后,只需要调用这个扩展方法即可:
public void ConfigureServices(IServiceCollection services) { services.ConfigureCors(); }
以上是关于net core 在startup以外的地方怎么取到iservicecollection的主要内容,如果未能解决你的问题,请参考以下文章
.NET Core 3.0之深入源码理解Startup的注册及运行
ASP.NET Core Web API中Startup的使用技巧
.net core 在Startup.cs 的Configure方法中扩展 IApplicationBuilder
Core Audio - 将数据写入音频文件的开头或中间(结尾以外的地方)
如何在 ASP.NET Core 1.0 的 DI 中的 Startup 类中添加 IHttpContextAccessor?