授权和温莎

Ron*_*nie 5 asp.net-mvc dependency-injection castle-windsor authorize

我正在尝试实现我的自定义授权属性,如:

 public class MyCustomAuth : AuthorizeAttribute
{
    private readonly IUserService _userService;

    public MyCustomAuth(IUserService userService)
    {
        _userService= userService;
    }
... continued
 }
Run Code Online (Sandbox Code Playgroud)

我正在使用Castle Windsor自动解决依赖关系.

当我尝试将它用作动作方法的属性时,显然我被要求传递参数,或者我需要一个无参数的构造函数,它应该以某种方式解析它的依赖性.

我试图用属性注入依赖项,但Windsor没有注入它.

我现在看到的唯一选择是手动实例化具体对象依赖性,从而失去Windsor的好处.

你会如何解决这个问题?

que*_*en3 8

你不能将DI与属性一起使用 - 它们是元数据;

public class MyCustomAuth : AuthorizeAttribute
{
    public void OnAuthorization(...)
    {
         IUserService userService = ServiceLocator.Current.GetInstance<IUserService>();
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里了解Windsor/ServiceLocator .

看到类似的问题在这里.