2

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?

Répondre