En este punto, estoy inyectando cosas en mis Controllers con facilidad, en algunos casos construyendo mi propia clase ResolverServices. La vida es buena .
Lo que no puedo averiguar cómo hacer es hacer que el marco se inyecte automáticamente en las clases que no son controladores. Lo que funciona es que el marco se inyecte automáticamente en mi controlador IOptions
, que es efectivamente la configuración para mi proyecto:
public class MessageCenterController : Controller
{
private readonly MyOptions _options;
public MessageCenterController(IOptions<MyOptions> options)
{
_options = options.Value;
}
}
Estoy pensando si puedo hacer lo mismo con mis propias clases. Supongo que estoy cerca cuando imito el controlador, así:
public class MyHelper
{
private readonly ProfileOptions _options;
public MyHelper(IOptions<ProfileOptions> options)
{
_options = options.Value;
}
public bool CheckIt()
{
return _options.SomeBoolValue;
}
}
Creo que estoy fallando cuando lo llamo así:
public void DoSomething()
{
var helper = new MyHelper(??????);
if (helper.CheckIt())
{
// Do Something
}
}
El problema que tengo para rastrear esto es que prácticamente todo lo que habla de DI lo está hablando a nivel del controlador. Intenté buscar dónde sucede en el Controller
código fuente del objeto, pero se vuelve un poco loco allí.
Sé que puedo crear manualmente una instancia de IOptions y pasarla al MyHelper
constructor, pero parece que debería poder hacer que el marco lo haga, ya que funciona Controllers
.
new
. Nunca para objetos que deberían resolverse