DI: внедрение реализации ActionFilterAttribute (ASP.NET MVC) - PullRequest
2 голосов
/ 16 мая 2010

Мне было интересно, возможно ли внедрить конкретную реализацию ActionFilterAttribute с использованием контейнера IoC.

Например, представьте, что вы создаете TransactionAttribute класс [Transaction]

Это используется для оформления действия, которое должно быть включено в транзакцию в слое постоянства. Но детали реализации атрибута будут привязаны к используемой вами технологии персистентности, и, строго говоря, ваш контроллер не должен знать об этом, и вы можете поменять это.

То, что я хотел бы сделать, это определить какой-то интерфейс TransactionAttribute, а затем мой контейнер IoC внедрить правильную реализацию. Так что в моих действиях мне нужно только указать:

 [Transaction]
 public ActionResult SomeAction()
 {
     ....
 }

... и IoC внедрит правильную реализацию в зависимости от конфигурации (например, что-то вроде NHibernateTransactionAttribute или SomeOtherORMTransactionAttribute).

Возможно ли это? Кто-нибудь делал это?

1 Ответ

2 голосов
/ 16 мая 2010

Как использовать Windsor для внедрения зависимостей в ActionFilterAttributes должно дать вам представление о том, как этого добиться.

...