2011-04-06 44 views
0

我有兩個獨立的庫(一個VB,一個C#)兩大類:ASP.NET:如影隨形問題

Public Class Item 
    ... 
    Public Overridable ReadOnly Property TotalPrice() As String 
    Get 
     Return FormatCurrency(Price + SelectedOptionsTotal()) 
    End Get 
End Property 
End Class 

public class DerivedItem : Item { 
    ... 
    public new Decimal TotalPrice 
    { 
     get { return Price + OptionsPrice; } 
    } 
} 

正如你所看到的,DerivedItem.TotalPrice陰影Item.TotalPrice屬性。但是,當試圖檢索DerivedItem.TotalPrice值時,我仍然收到基礎對象的TotalPrice值。

爲什麼DerivedItem的財產不被退還?

編輯

其實我已經發現了這個問題!我在通過AJAX返回的JSON字符串中獲取了錯誤的值。事實證明,TotalPrice被正確地返回,它只是被稍後在JSON字符串中進行的陰影屬性調用覆蓋。那麼我的新問題是如何防止陰影屬性被序列化?

(這個問題已經rescoped here

回答

0

你是從基礎類型的引用referecing TotalPrice?

Item item = new DerivedItem; 
string s = item.TotalPrice; 
+0

否...該項目通過來自AJAX調用的asmx Web綁定進行綁定。我的簽名看起來像'Public SomeMethod(item As DerivedItem)As String' – Jason 2011-04-06 01:09:52

+0

SomeMethod如何使用item?挺有趣的。 VB庫與C#庫擴展,然後VB AJAX調用。 :-) – klabranche 2011-04-06 01:32:06

2

這可能取決於你如何實例化對象。

例如:

DerivedItem i = new DerivedItem(); 
i.TotalPrice(); 

將調用陰影版本。

但是:

Item i = new DerivedItem(); 
i.TotalPrice(); 

真要調用基。

Here's a nice explanation.

當然,如果可能的話我會避免陰影.... :-)

+0

我正在從webmethod參數實例化對象。請參閱我對mystere人的回答的評論 – Jason 2011-04-06 01:19:43

+0

SomeMethod如何使用項目?挺有趣的。 VB庫與C#庫擴展,然後VB AJAX調用。 :-) – klabranche 2011-04-06 01:32:30

+0

是啊,這是一個有趣的項目肯定...但我仍然有這個問題。只有在將對象序列化爲JSON字符串時纔會發生。這真的令人沮喪。 – Jason 2011-04-06 16:54:04

0

是否在基類屬性設置工作屬性<NonSerialized()>

+0

這就是事情......我仍然希望它在基類被使用時序列化... – Jason 2011-04-15 15:29:57