使用属性提前从方法返回

本文关键字:方法 返回 属性 | 更新日期: 2023-09-27 17:50:26

是否有可能使一个属性检查一个条件,然后根据该条件停止修饰方法的执行或让修饰方法继续执行?

现在是显而易见的问题。如果有,怎么做?如果没有,那么是否有其他工作值得一试?

这个属性的总体目标是,在ASP中。. NET MVC,检查用户是否被授权,如果他们没有被授权,要么返回一个特定的JsonResult(在属性中定义),要么让装饰方法继续执行。明显的问题,我看到这是可能的,如果控制器动作是不同类型的ActionResultJsonResult,存在运行时错误的可能性。

使用属性提前从方法返回

对于您的特殊情况,您可以使用ASP。. NET MVC 过滤器做你需要的。让您的属性扩展AuthorizeAttribute。

public class MustHaveFooAccessAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        // Return true or false after checking authorization
    }
}

使用属性是不可能的-属性在编译时解析。它们不会在运行时执行。

属性"control"的特定行为是通过反射来管理的。