我试图使用Autofac的选项模式,但每次尝试都导致错误。
我的尝试:
- 使用ConfigurationBuilder来检索IConfiguration/IConfigurationRoot。
- 注册TestSectionOptions的一个实例,使用之前创建的IConfiguration/IConfigurationRoot:
builder.Register(c => config.GetSection("TestSection").Get<TestSectionOptions>());
- 尝试通过构造函数注入它:
private readonly TestSectionOptions _options;
public DemoClass(IOptions<TestSectionOptions> options)
{
_options = options.Value;
}
我遇到了以下错误:
依赖解析异常:在类型“DemoApp.DemoClass”上未找到可用服务和参数的构造函数:无法解析构造函数参数“Microsoft.Extensions.Options.IOptions
1 [DemoApp.TestSectionOptions] options”。
当然我也尝试了其他类型的注册方法,但都没有成功。我知道我可以简单地将配置文件绑定到一个类,然后注册并注入它而不需要IOptions <>部分。但那将不再完全对应于选项模式,对吧?
即使这没有太大的区别,我仍然想知道为什么它不起作用以及如何让它起作用。
IConfigureOptions<TOptions>
/IConfigureNamedOptions<TOptions>
,但我仍然不确定是否正确。我会尝试一下,如果找到了合适的方法就回复。 - MergimAgain