Мне было интересно, возможно ли внедрить конкретную реализацию ActionFilterAttribute
с использованием контейнера IoC.
Например, представьте, что вы создаете TransactionAttribute
класс [Transaction]
Это используется для оформления действия, которое должно быть включено в транзакцию в слое постоянства. Но детали реализации атрибута будут привязаны к используемой вами технологии персистентности, и, строго говоря, ваш контроллер не должен знать об этом, и вы можете поменять это.
То, что я хотел бы сделать, это определить какой-то интерфейс TransactionAttribute
, а затем мой контейнер IoC внедрить правильную реализацию. Так что в моих действиях мне нужно только указать:
[Transaction]
public ActionResult SomeAction()
{
....
}
... и IoC внедрит правильную реализацию в зависимости от конфигурации (например, что-то вроде NHibernateTransactionAttribute
или SomeOtherORMTransactionAttribute
).
Возможно ли это? Кто-нибудь делал это?