我知道构造函数模式可以获得已配置的IOptions,例如
public SomeClass(IOptions<SomeOptions> someOptions)
{
}
但是,我遇到了一个我想要访问SomeOptions的现有方法的场景。我不想更改该类的构造函数的签名。有没有其他方法可以访问SomeOptions?
答案 0 :(得分:1)
这是“服务定位器”反模式,但您可以从控制器或任何其他基类中的DI容器中检索服务,这些基类为您提供HttpContext
的实例:
var opts = HttpContext.RequestServices.GetService(typeof(IOptions));
答案 1 :(得分:0)
ASP.NET Core中的内置DI容器非常简单,仅通过构造函数支持依赖注入。在您的情况下,您有2个选项(因为您不想更改ctor签名)
IOptions<SomeOptions>
作为existing method
的参数传递。但是在调用方法之前,你需要在其他地方从DI容器中获取选项。