An diesem Punkt füge ich mühelos Dinge in meine Controller ein und baue in einigen Fällen meine eigene ResolverServices-Klasse auf. Das Leben ist gut .
Was ich nicht herausfinden kann, ist, das Framework so zu gestalten, dass es automatisch in Nicht-Controller-Klassen eingefügt wird. Was funktioniert, ist, dass das Framework automatisch in meinen Controller eingefügt wird. Dies IOptions
ist effektiv die Konfiguration für mein Projekt:
public class MessageCenterController : Controller
{
private readonly MyOptions _options;
public MessageCenterController(IOptions<MyOptions> options)
{
_options = options.Value;
}
}
Ich überlege, ob ich das auch für meine eigenen Klassen tun kann. Ich gehe davon aus, dass ich nah dran bin, wenn ich den Controller nachahme:
public class MyHelper
{
private readonly ProfileOptions _options;
public MyHelper(IOptions<ProfileOptions> options)
{
_options = options.Value;
}
public bool CheckIt()
{
return _options.SomeBoolValue;
}
}
Ich denke, wo ich versage, ist, wenn ich es so nenne:
public void DoSomething()
{
var helper = new MyHelper(??????);
if (helper.CheckIt())
{
// Do Something
}
}
Das Problem, das ich habe, ist, dass praktisch alles, was über DI spricht, auf Controller-Ebene darüber spricht. Ich habe versucht herauszufinden, wo es im Controller
Objektquellcode passiert , aber es wird dort irgendwie verrückt.
Ich weiß, dass ich eine Instanz von IOptions manuell erstellen und an den MyHelper
Konstruktor übergeben kann, aber es scheint, als ob ich in der Lage sein sollte, das Framework dazu zu bringen, da es funktioniert Controllers
.
new
. Niemals für Objekte, die aufgelöst werden sollten