Sto tentando di scrivere un attributo di autenticazione da applicare ad alcuni servizi in un'app di servizio WCF (utilizzando Unity e Unity.Wcf).Iniezione di una dipendenza in un attributo utilizzando Unity in WCF
L'autenticazione viene eseguita da un'interfaccia di autenticazione esterna (all'app del servizio) che viene attualmente iniettata tramite la funzione di costruzione nella classe di servizio e richiamata direttamente in ciascun metodo di servizio.
Questo porta a un sacco di codice ripetuto in ciascuno dei metodi di servizio.
Invece, voglio spostarlo su un attributo.
Tuttavia, ho bisogno che l'interfaccia di autenticazione sia accessibile nell'attributo.
Ovviamente, se uso l'injection construction sull'attributo, è un parametro obbligatorio quando decorare il mio metodo di servizio con l'attributo, ma non ho accesso ad esso a questo punto perché è cablato da Unity.
Come posso iniettare (o altrimenti accedere a) l'interfaccia di autenticazione nel mio attributo?
O ricorrere a Service Locator e rendere l'attributo a [Humble Object] (http://xunitpatterns.com/Humble%20Object.html) che delega esclusivamente al servizio che risolve o rende passivo l'attributo, come spiegato [qui] (http://blog.ploeh.dk/2014/06/13/passive-attributes/) e [qui] (https://www.cuttingedge.it/blogs/steven/pivot/entry.php? id = 98). – Steven
Grazie Steven, avrò letto questi link – Shevek
Ho basato la mia opinione su [Mark Seeman's book] (http://amzn.to/12p90MG) e quindi considero il Service Locator un anti-pattern. Ma se Steven avesse dato una risposta invece di un commento, lo avrei svalutato per il collegamento a [attributi passivi] (http://blog.ploeh.dk/2014/06/13/passive-attributes/). – wigy