2011-08-03 129 views
1

在下面的代碼:(在web服務WebMethod屬性)命名參數混淆

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

} 

爲WebMethod屬性類構造器的智能感知示出了第二過載作爲命名的參數。 我的疑問是,在參數名稱後沒有使用冒號(:)指定的命名參數值。這裏如何使用平等運算符?

謝謝。

回答

5

您使用的第三種語言特別的屬性,在其中您可以指定字段在構造函數調用使用名稱=值語法屬性實例上初始化。

[WebMethod(cacheDuration: 300)] 

可以正常工作,但它使用標準的命名參數語法而不是屬性字段初始化語法。請記住,在存在命名參數之前,屬性就在附近

+0

我嘗試使用CacheDuration:300,它顯示消息「最佳重載沒有名爲CacheDuration的參數」 – Jake

+0

@Amit:這是因爲我得到的參數名稱錯誤(應該是小寫);-) – Cameron

+0

是啊你是對的...所以總結起來,與等於的語法實際上是通過屬性初始化字段? – Jake

0

我相信這與的WebMethod屬性做。

看這有效的代碼:

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

如果你看一下元數據的WebMethod,有一個名爲「CacheDuration」屬性。