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使用導入屬性。