我在两个独立的库中有两个类(一个VB,一个C#):
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字符串中进行的阴影属性调用覆盖。那么,我的新问题是如何防止被遮蔽的属性被序列化?
(此问题已重新调整here)
答案 0 :(得分:2)
这可能取决于您如何实例化对象。
例如:
DerivedItem i = new DerivedItem();
i.TotalPrice();
将调用阴影版本。
然而:
Item i = new DerivedItem();
i.TotalPrice();
实际上会打电话给基地。
当然,如果可能的话我会避免遮蔽......: - )
答案 1 :(得分:0)
您是否引用了对基本类型的引用的总价格?
Item item = new DerivedItem;
string s = item.TotalPrice;
答案 2 :(得分:0)
在基类属性上设置<NonSerialized()>
属性是否有效?