Sto cercando di trovare un modo per utilizzare Ninject per iniettare le dipendenze del costruttore nei filtri. Sto trovando molti articoli che descrivono l'iniezione di proprietà che è ora sconsigliato, ma il resto degli articoli coinvolge configurazioni complesse con fabbriche, locatori, wrapper globali o attributi di stub.Iniezione del costruttore del filtro usando Ninject
Con MVC che consente di ignorare quasi tutte le parti del suo funzionamento, avrei pensato che sarebbe stato semplicemente il caso di creare il proprio fornitore di filtri in modo simile a come si crea il proprio risolutore di dipendenze.
Qual è il metodo ora corretto per consentire l'iniezione o diventa più semplice se si utilizzano determinati tipi di filtri o altri?
public class UserValidationAttribute : ActionFilterAttribute
{
private IRepository repository;
public UserValidationAttribute(IRepository repository)
{
this.repository = repository;
}
}
Solo una nota: il consenso generale sembra essere che l'iniezione di proprietà debba essere utilizzata per dipendenze opzionali, ma un'iniezione del costruttore per le dipendenze richieste (che tipo di ha senso - non è possibile costruire un tipo senza le sue dipendenze richieste, ma proprietà potrebbe non essere iniettato in base a quali servizi sono disponibili per il contenitore) – Charleh
Ora ho implementato il metodo in cui si dispone di un filtro globale che verifica se si applica controllando se è presente un attributo token. Quello che non ottengo in questo momento è che quando uso l'attributo token sull'azione e utilizzo 'filterContext.ActionDescriptor.IsDefined (typeof (MyTokenAttribute), true)' Ottengo 'true', ma se metto solo il token attributo sul controller ottengo 'false'. –