0
我创建了一个基于这篇文章上的应用程序: mef-in-aspnet-mvc-4-and-webapiASP:NET MVC 4 + MEF
这是一个很好的解决方案,但我怎么可以注入的依赖变成一个ActionFilter?
我创建了一个基于这篇文章上的应用程序: mef-in-aspnet-mvc-4-and-webapiASP:NET MVC 4 + MEF
这是一个很好的解决方案,但我怎么可以注入的依赖变成一个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);
ActionFilter使用导入属性。