2012-08-20 22 views
0

在VB在C#中使用BYVAL .....有點複雜

Protected Overridable ReadOnly Property AuthorizationHeaderValue(ByVal signature As  String) As String 
Get 
    Return String.Format("{0} {1}:{2}", AuthorizationHeaderSignaturePrefix, APIIdentifier, signature) 
End Get 
End Property 

我在C#什麼:

protected virtual string AuthorizationHeaderValue 
    { 
     get { return string.Format("{0} {1}:{2}", AuthorizationHeaderSignaturePrefix, APIIdentifier, signature); } 
    } 

我得到這個錯誤在C#:

當前上下文中不存在名稱「簽名」...

這對我來說似乎很明顯,因爲當我轉換代碼時,它會丟棄(ByVal signature as String)。

想法?

回答

3

您的C#代碼的問題在於屬性主體期望變量簽名但您沒有定義具有該名稱的變量。

C#不允許屬性具有VB.Net所做的參數(每個類除外一個indexer)。考慮將其轉換爲方法。

protected virtual string AuthorizationHeaderValue(string signature) 
{ 
    return string.Format("{0} {1}:{2}", AuthorizationHeaderSignaturePrefix, 
      APIIdentifier, signature); 
} 
+0

謝謝。我正在考慮這些方面。太糟糕的c sharp不允許這樣做,這是VB.NET的一個強大方面。 – 2012-08-20 02:15:47

+0

我不同意......它使方法之間的屬性不明確。性能的一個主要優點是性能......但是當你添加一個參數時你會失去這個性能。 – Andrew 2012-08-20 02:19:17

+0

讓我們希望代碼實際工作。我還有大約15個錯誤需要弄清楚。 :p – 2012-08-20 02:27:52