C#属性或属性

时间:2012-04-18 14:45:37

标签: c# asp.net-mvc-3 attributes annotations custom-attributes

我知道你可以在C#中添加一个属性,比如这个,

EX1。

[HttpPost]
public void Method()
{
//code
}

这意味着必须满足该属性才能运行Method()

我知道你可以叠加这样的属性,

EX2。

[HttpPost]
[RequireHttps]
public void Method2()
{
 //More code
}

在使用Method2()之前,检查是否满足attribute1'AND'atribute2。

但你能'或'属性吗?这样的事可能吗?

EX3。

[HttpPost || RequireHttps]
public void Method3()
{
  //Even more code
}

因此,如果满足任一属性,您可以使用Method3()

编辑:对不起,印象属于名为Annotations的属性。修好了。

2 个答案:

答案 0 :(得分:6)

  

这意味着必须满足注释才能运行Method()

这是一种误解。

[HttpPost]属性是一个指令,此方法仅匹配Post请求。它不像安全检查那样“需求”。只有一些属性以这种方式工作。

但是当将它们视为“要求”时:它们独立工作,因此总是会导致 AND 行为。

答案 1 :(得分:1)

在C#中,它们不是注释,而是属性 默认情况下,属性不会用于除装饰类,方法,属性等之外的任何内容。但是通过反射,您可以将它们用于您喜欢的任何内容,就像ASP.NET MVC对HttpPostRequireHttps所做的那样。 {1}}。

不幸的是他们无法进行OR'ed。