最近在修改/整理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
其中 services 是 IServiceCollection 类型的实例。













网友评论