2 messaggi dal 12 febbraio 2014
Buongiorno,
la domanda sarà per questa comunità banale e me ne scuso, ma non riesco proprio ad arrivarci.
Sto cercando di sviluppare una semplice web application che si avvale della dependency injection inserendo nel costruttore l'interfaccia.

Nel controller va benissimo le dipendenze sono instanziate:

 private readonly IHttpContextAccessor httpContextAccessor;
  public HomeController(IHttpContextAccessor httpContextAccessor)



In una classe business invece il sistema mi richiede i parametri.
 this.LoginViewModel = new LoginViewModel(); //Errore non sono stati specificati
                                     //argomenti corrispondenti al parametro formale


eppure la dipendenza è la stessa.

  private readonly IHttpContextAccessor httpContextAccessor;

        public LoginViewModel(IHttpContextAccessor httpContextAccessor)
        {
            this.httpContextAccessor = httpContextAccessor;
        }


Ringrazio coloro che vorranno aiutarmi.
464 messaggi dal 08 febbraio 2009
Ciao

La dependency injection funziona per fare in modo che specifichi nel costruttore della classe tutto quello che ti serve.
Di solito si mettono le interfacce, così puoi cambiare le implementazioni a runtime senza dover modificare il codice.


Nell'esempio che stai postando, però, stai istanziando manualmente la classe (istruzione "new").
Quando istanzi la classe manualmente, non passi dalla dependency injiection.


Pertanto, nella tua classe di business, devi avere nel costruttore il LoginViewModel, così poi la dependency injection si occupa di istanziarla al posto tuo.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.