命名参数混乱

时间:2011-08-03 02:26:11

标签: c# asp.net

在以下代码中:( Web服务中的WebMethod属性)

[WebMethod(CacheDuration = 300)]
public string GetData(string Id)
{

}

WebMethod属性类构造函数的intellisense将第二个重载显示为命名参数。 我怀疑的是,在参数名称后面没有使用冒号(:)指定的命名参数值。为什么在这里使用等于运算符?

感谢。

2 个答案:

答案 0 :(得分:5)

您正在使用特定于属性的第三种语法,您可以在构造函数调用中使用Name = Value语法指定要在属性实例上初始化的字段。

[WebMethod(cacheDuration: 300)]

也可以正常工作,但它使用标准的命名参数语法而不是属性字段初始化语法。请记住,在命名参数存在之前,属性已经存在。

答案 1 :(得分:0)

我认为它与WebMethod的属性有关。

请查看此有效代码:

class TestAttribute : Attribute
{
    public int MyProperty { get; set; }
}
class Program
{
    [Test(MyProperty=300)]
    public void method1()
    {
    }
}

如果您查看WebMethod的元数据,则会有一个名为“CacheDuration”的属性。