2014-05-19 9 views
12

Come posso ottenere l'istanza del resolver di dipendenza in web api? In asp.net mvc posso fare DependencyResolver.Current, c'è un equivalente in web api?Come ottenere l'istanza del resolver di dipendenza nell'API Web ASP.NET

+0

Probabilmente lo sapete già, ma devo fornire l'avvertimento obbligatorio: dovreste permettere al resolver di dipendenza di iniettare le dipendenze necessarie nelle vostre classi, usando Api Controller come root di contesto, piuttosto che andare alla ricerca del risolutore di dipendenze. – StriplingWarrior

+6

sì, il motivo per cui ho bisogno di usare il resolver è all'interno di un raccoglitore modello personalizzato, che verrà impostato usando l'attributo modelbinder, invece di un fornitore di binder modello, quindi verrà istanziato con un costruttore paramterless, quindi devo usare il servizio posizione per ottenere le dipendenze. – ryudice

+0

Solo un suggerimento: http://stackoverflow.com/questions/21919753/. Per favore, prendilo come un'altra vista - perché evitare 'IDependencyResolver'. ServiceLocator potrebbe/dovrebbe essere visto come antipattern http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx –

risposta

9

Ignorare ciò che le persone dicono di essere un anti-modello. Non otterrai una copertura DI completa, specialmente con queste giovani tecnologie. Ad esempio, al momento della scrittura, NInject non ha supporto per l'iniezione nei middleware.

Per rispondere alla domanda, il resolver di dipendenza per una richiesta è disponibile tramite HttpRequestMessage.GetDependencyScope(). È inoltre possibile utilizzare HttpConfiguration.DependencyResolver, tuttavia, fare attenzione che questo non sia adeguatamente definito per la richiesta eseguita.

Si consiglia di verificare la documentazione per l'implementazione specifica del CIO.

Problemi correlati