2013-08-22 82 views

回答

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); 

ActionFilter使用導入屬性。