2011-08-03 4 views
1

:(ウェブサービスにおけるWebMethod属性)名前付きパラメータを次のコードで混乱

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

} 

WebMethod属性クラスのコンストラクタのためのインテリセンスは、名前付きパラメータとして第2の過負荷を示しています。 疑わしいのは、パラメータ名の後にコロン(:)を使用して指定された名前付きのパラメータ値ではないということです。どのように演算子がここで使用されるのでしょうか?

ありがとうございました。

答えて

5

属性に固有の3番目の構文を使用しています。この場合、コンストラクタ呼び出しでName = Value構文を使用して属性インスタンスで初期化するフィールドを指定できます。

[WebMethod(cacheDuration: 300)] 

も同様ですが、属性フィールド初期化構文の代わりに標準の名前付きパラメータ構文を使用しています。名前付きパラメーターが存在する前に属性があったことに注意してください。

+0

私はCacheDuration使用してみました:300は、それがそのメッセージを示し – Jake

+0

@Amit「最高の過負荷は、パラメータの名前CacheDurationを持っていない」:私は間違っているパラメータの名前を得たので、それはだ(それは小文字されている必要があります);-) – Cameron

+0

うんあなたは正しいです...それで、それを要約すると、等価の構文は実際にプロパティを介してフィールドを初期化していますか? – Jake

0

WebMethodのプロパティと関係していると思います。この有効なコードで

ルック:

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

あなたはWebMethodのためのメタデータを見れば、「CacheDuration」と呼ばれるプロパティがあります。

関連する問題