2013-08-22 128 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使用导入属性。