user295541
user295541

Reputation: 1015

ASP:NET MVC 4 + MEF

I created an application based on this article : mef-in-aspnet-mvc-4-and-webapi

It is a nice solution but how I can inject a dependency into an ActionFilter?

Upvotes: 0

Views: 523

Answers (1)

user295541
user295541

Reputation: 1015

Finally, I found the solution for this problem.

First I had to create an own FilterProvider class:

 public class FilterProvider : FilterAttributeFilterProvider
{
    private readonly CompositionContainer _compositionContainer;

    public FilterProvider(CompositionContainer compositionContainer)
    {
        _compositionContainer = compositionContainer;
    }

    protected override IEnumerable<FilterAttribute> GetActionAttributes(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
    {
        var attributes = base.GetActionAttributes(controllerContext,
                                              actionDescriptor);
        foreach (var attribute in attributes)
        {
            _compositionContainer.ComposeParts(attribute);
        }

        return attributes;
    }
}

And I had to add this class to FilterProviders collection:

 var provider = new FilterProvider(container);
        FilterProviders.Providers.Add(provider);

using this I can inject any dependencies into a custom ActionFilter using import attribute.

Upvotes: 1

Related Questions