À ce point, je suis d'injecter des choses dans mon Contrôleurs avec facilité, dans certains cas, la construction de ma propre ResolverServices classe. La vie est bonne.
Ce que je ne peux pas comprendre comment le faire est d'obtenir le cadre d'injecter automatiquement dans le non-classes de contrôleur. Ce n'travail est de disposer d'un cadre injecter automatiquement dans mon contrôleur IOptions
, ce qui est effectivement la configuration de mon projet:
public class MessageCenterController : Controller
{
private readonly MyOptions _options;
public MessageCenterController(IOptions<MyOptions> options)
{
_options = options.Value;
}
}
Je pense que je peux avoir la même chose pour mes classes, un je suppose que je suis proche quand j'ai imiter le contrôleur, comme ceci:
public class MyHelper
{
private readonly ProfileOptions _options;
public MyHelper(IOptions<ProfileOptions> options)
{
_options = options.Value;
}
public bool CheckIt()
{
return _options.SomeBoolValue;
}
}
Je pense où je ne suis pas, c'est quand je l'appelle comme ceci:
public void DoSomething()
{
var helper = new MyHelper(??????);
if (helper.CheckIt())
{
// Do Something
}
}
Le problème que j'ai suivi cette baisse est pratiquement tout ce qui parle de DI est d'en parler au niveau du contrôleur. J'ai essayé de la chasse où il arrive dans l' Controller
objet en code source, mais il devient un peu fou là-dedans.
Je sais que je peux créer manuellement une instance de IOptions et de passer à l' MyHelper
constructeur, mais il semble que je devrais être en mesure d'obtenir le cadre de le faire depuis qu'il travaille pour Controllers
.
Votre aide est très appréciée.