Asp.net mvc 4 ASP:netmvc4+;MEF

Asp.net mvc 4 ASP:netmvc4+;MEF,asp.net-mvc-4,mef,Asp.net Mvc 4,Mef,我基于本文创建了一个应用程序: 这是一个很好的解决方案,但如何将依赖项注入ActionFilter?最后,我找到了这个问题的解决方案 首先,我必须创建自己的FilterProvider类: public class FilterProvider : FilterAttributeFilterProvider { private readonly CompositionContainer _compositionContainer; public FilterProvider

我基于本文创建了一个应用程序:


这是一个很好的解决方案,但如何将依赖项注入ActionFilter?

最后,我找到了这个问题的解决方案

首先,我必须创建自己的FilterProvider类:

 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;
    }
}
使用这个,我可以使用import属性将任何依赖项注入到自定义ActionFilter中

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