![](/img/trans.png)
[英]DataContract Parent reference in child property - how to avoid infinite serialization loop
[英]How do I avoid an infinite loop when overriding a virtual property?
當我分配或檢索值時,是否可以忽略設置和獲取?
具體來說,我從具有這樣聲明的屬性的類繼承:
virtual public Int32 Value { get; set; }
我想做的是重寫它,並在這些set和get中做一些有用的事情。 當我覆蓋它時出現問題,我也必須手動分配或從屬性返回值。 如果我做這樣的事情:
override public Int32 Value
{
get
{
return this.Value;
}
set
{
this.Value = value;
// do something useful
}
然后創建一個無限循環。 有沒有一種方法可以設置或獲取值而無需調用set and get中的代碼,還是必須為實際變量命名一個單獨的名稱?
而不是使用的this.Value
,你應該使用base.Value
。 這將檢索/設置基類中的屬性。
請注意,基本方法實際上必須是可重寫的( virtual
或abstract
)。 在您的示例中不是。 如果基本方法不是虛擬的,那么當您嘗試在派生類中重寫時,您只會得到一個編譯器錯誤。
您追求的關鍵字是base
關鍵字, 在此處記錄 。 這迫使編譯器將屬性引用解析為基類中定義的引用。 VB.NET的等效項是MyBase。
從而:
get
{
return base.Value;
}
set
{
base.Value = value;
// do something useful
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.