Внедрение свойств в фильтр действий

Я пытаюсь заставить Property Injection работать с настраиваемым атрибутом фильтра действий. Он работает так, как должен, однако я хотел бы использовать DI для самого свойства. Мой фильтр выглядит следующим образом

[AttributeUsage(AttributeTargets.Class)]
public sealed class HeaderFilterAttribute : ActionFilterAttribute
{
    public IMarketService MarketService
    { get; set; }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var view = (ViewResultBase)filterContext.Result;

        if (view != null)
        {
            BaseViewModel viewModel = view.ViewData.Model as BaseViewModel;
            if (viewModel != null)
                viewModel.Header = GetHeaderScript();
        }
        base.OnActionExecuted(filterContext);
    }

   private string GetHeaderScript()
   {
     //Use MarketService here and return header script
     return "script";
   }
}

Вот как я настраиваю свойство с помощью StructureMap внутри моего класса BootStrapper.

            //HeaderFilterAttribute
        IMarketRepository marketRepository = new SqlMarketRepository();
        IMarketService marketService = new MarketService(marketRepository);
        ObjectFactory.Container.Configure(r => r.ForConcreteType<HeaderFilterAttribute>().
                                          Configure.WithProperty("MarketService").
                                          EqualTo(marketService));

Моя проблема в том, что у меня нет доступа к SqlMarketRepository, поскольку все мои конкретные типы вводятся через DI, и я действительно не Я не хочу использовать конкретные типы в моем загрузчике. Итак, главный вопрос: как мне добавить MarketService в атрибут Filter, не прибегая к вышеизложенному? :)

5
задан Joel 22 August 2013 в 13:44
поделиться