Reputation: 1015
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
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