我根据这篇文章创建了一个应用程序: mef-in-aspnet-mvc-4-and-webapi
这是一个不错的解决方案,但是我如何将依赖项注入到 ActionFilter 中?
我根据这篇文章创建了一个应用程序: mef-in-aspnet-mvc-4-and-webapi
这是一个不错的解决方案,但是我如何将依赖项注入到 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;
}
}
我不得不将这个类添加到 FilterProviders 集合中:
var provider = new FilterProvider(container);
FilterProviders.Providers.Add(provider);
使用它,我可以使用 import 属性将任何依赖项注入到自定义 ActionFilter 中。