W tym momencie z łatwością wstrzykuję rzeczy do moich kontrolerów, w niektórych przypadkach budując własną klasę ResolverServices. Życie jest dobre .
To, czego nie potrafię zrobić, to sprawić, by framework automatycznie wstawiał do klas niebędących kontrolerami. To, co działa, to automatyczne wstrzykiwanie frameworka do mojego kontrolera IOptions
, który jest w rzeczywistości konfiguracją dla mojego projektu:
public class MessageCenterController : Controller
{
private readonly MyOptions _options;
public MessageCenterController(IOptions<MyOptions> options)
{
_options = options.Value;
}
}
Zastanawiam się, czy mogę zrobić to samo dla moich własnych zajęć. Zakładam, że jestem blisko, kiedy naśladuję kontroler, w ten sposób:
public class MyHelper
{
private readonly ProfileOptions _options;
public MyHelper(IOptions<ProfileOptions> options)
{
_options = options.Value;
}
public bool CheckIt()
{
return _options.SomeBoolValue;
}
}
Myślę, że zawodzę, gdy nazywam to tak:
public void DoSomething()
{
var helper = new MyHelper(??????);
if (helper.CheckIt())
{
// Do Something
}
}
Problem, który mam ze śledzeniem tego, to praktycznie wszystko, co mówi o DI, mówi o tym na poziomie kontrolera. Próbowałem znaleźć miejsce, w którym to się dzieje w Controller
kodzie źródłowym obiektu, ale robi się tam trochę szalenie.
Wiem, że mogę ręcznie utworzyć wystąpienie IOptions i przekazać je MyHelper
konstruktorowi, ale wydaje się, że powinienem być w stanie to zrobić, ponieważ działa Controllers
.
new
. Nigdy dla obiektów, które powinny zostać rozwiązane