在以下代码中:( Web服务中的WebMethod属性)
[WebMethod(CacheDuration = 300)]
public string GetData(string Id)
{
}
WebMethod属性类构造函数的intellisense将第二个重载显示为命名参数。 我怀疑的是,在参数名称后面没有使用冒号(:)指定的命名参数值。为什么在这里使用等于运算符?
感谢。
答案 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”的属性。