使用属性过早地从方法返回

时间:2011-04-16 18:56:57

标签: c# attributes custom-attributes

是否可以创建一个检查条件的属性,然后根据该条件停止装饰方法执行或让装饰方法继续执行?

现在这个显而易见的问题。如果是这样,怎么样?如果没有,那么还有值得一试的工作吗?

此属性的总体目标是,在ASP.NET MVC中,检查用户是否已获得授权,如果未授权,则返回特定的JsonResult(在属性中定义),或者让其进行修饰方法继续执行。我看到的一个明显的问题是,如果控制器操作的类型与ActionResultJsonResult不同,则存在运行时错误的可能性。

2 个答案:

答案 0 :(得分:2)

对于您的特定情况,您可以使用ASP.NET MVC 过滤器来执行您需要的操作。让您的属性扩展AuthorizeAttribute

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

答案 1 :(得分:1)

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

通过反射来管理属性“控制”的特定行为。