WebApi ActionFilterAttribute控制器属性和Ninject依赖项

时间:2014-07-17 09:31:15

标签: c# asp.net-web-api dependency-injection ninject

我有一个问题,我需要从控制器属性传递一个参数,但我也想要一个依赖项被DI到属性中,以便我可以将它与传递给属性的参数一起使用

我目前使用类中公共属性的[Inject]属性。是否可以在没有[Inject]装饰器的情况下进行注入。我已经看到很多关于设置这个的帖子,你没有从控制器传递参数,但我还没有能够得到你可以做两个样本的样本。

我在DI容器中使用Ninject

我的属性看起来像这样

public class AccessActionFilter : ActionFilterAttribute, IActionFilter
{
    private readonly string[] _permissions;
    public AccessActionFilter(string[] permissions)
    {
        _permissions = permissions;
    }

    [Inject]
    public IUserService UserService { private get; set; }

    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        //... custom logic here
        var hasPermissons = UserService.HasPermission(string[] permissions);
        ...
        base.OnActionExecuting(actionContext);
    }

    public override bool AllowMultiple
    {
        get { return false; }
    }
}

我的控制器代码如下所示

    Controller Code

[AccessActionFilter(new []{"UpdateDocument"})].
public async Task<HttpResponseMessage> Post(PostedModel model)

0 个答案:

没有答案