ASP:NET MVC 4 + MEF

时间:2013-08-22 09:27:19

标签: asp.net-mvc-4 mef

我基于这篇文章创建了一个应用程序: mef-in-aspnet-mvc-4-and-webapi

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

1 个答案:

答案 0 :(得分:1)

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

首先,我必须创建一个自己的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;
    }
}

我必须将此类添加到FilterProviders集合中:

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

使用这个我可以使用import属性将任何依赖项注入自定义ActionFilter。