美文网首页C#.NET Core.Netcore
.Net core 中通过IServiceCollection实

.Net core 中通过IServiceCollection实

作者: Weidaicheng | 来源:发表于2018-06-10 13:32 被阅读4次

最近在修改/整理Aquarius.Weixin项目,今天修改了一下之前写的添加DI的扩展方法,遇到了不知道怎么手动解析出IOptions的问题,在此记录一下(还不是因为自己没学好 (′д` )…彡…彡)

IServiceCollection 扩展类一般有如下3个方法:

AquariusWeixinServiceCollectionExtensions.png
其中,后两个方法分别接收 Action<AquariusWeixinOptions>IConfiguration,作为配置信息传入,在方法中调用 services.Configure 方法之后再调用无参的 AddAquariusWeixin ,代码如下:
public static IAquariusWeixinBuilder AddAquariusWeixin(this IServiceCollection services, Action<AquariusWeixinOptions> setupAction)
{
    services.Configure(setupAction);
    return AddAquariusWeixin(services);
}

所以,在无参的 AddAquariusWeixin 方法中需要手动去解析添加的配置信息来通过配置达到不同的注入。
在经过一番google之后在stackoverflow找到了一个可以取到 IServiceProvider 类型实例的方法。
具体写法如下:

var provider = services.BuildServiceProvider();//get an instance of IServiceProvider
var options = provider.GetRequiredService<IOptions<AquariusWeixinOptions>>().Value;//resolve an instance of AquariusWeixinOptions

其中 servicesIServiceCollection 类型的实例。

相关文章

网友评论

    本文标题:.Net core 中通过IServiceCollection实

    本文链接:https://www.haomeiwen.com/subject/wmmfeftx.html