Je me demandais s'il était possible d'injecter une implémentation ActionFilterAttribute
particulière à l'aide d'un conteneur IoC.DI: Injection de l'implémentation ActionFilterAttribute (ASP.NET MVC)
Par exemple, imaginez que vous créez une classe TransactionAttribute
[Transaction]
Vous utilisez ce pour décorer une action qui devrait être enveloppé dans une transaction dans la couche de persistance. Mais les détails de mise en œuvre de l'attribut seront liés à la technologie de persistance que vous utilisez, et à proprement parler, votre contrôleur ne devrait pas savoir à ce sujet, et vous pourriez vouloir changer cela.
Ce que je voudrais faire, c'est définir une sorte d'interface TransactionAttribute
, puis demander à mon conteneur IoC d'injecter l'implémentation correcte. Donc, sur mes actions, je dois seulement préciser:
[Transaction]
public ActionResult SomeAction()
{
....
}
... et le IoC injectera la mise en œuvre correcte en fonction de configuration (par exemple, quelque chose comme NHibernateTransactionAttribute
ou SomeOtherORMTransactionAttribute
.).
Est-ce possible? Est-ce que quelqu'un l'a fait?