簡體   English   中英

無法覆蓋屬性的受保護集

[英]Cannot override property's protected set

我有以下基類:

abstract class Base
{
 public abstract object Var
 {
  get;
  protected set;
 }
}

而這個派生類:

class Derived : Base
{
 public override object Var
 {
  get {//code here
  }
  set {//code here -- I get error here!
  }
 }
}

但是我收到了這個錯誤:

覆蓋'protected'繼承成員'Var'時無法更改訪問修飾符

我嘗試在設置之前添加protectedprivate關鍵字,但它沒有幫助。 我該如何解決?

更新:
基類必須確保子類在創建時為Var提供值。 所以我需要在Base類中聲明setter。
或者,我可以聲明一個私有成員變量來執行此操作並刪除setter,但這不是這里討論的選項。

問題是派生類中的set具有public可見性 - 因為您沒有明確指定protected 由於此屬性的集合在基類中具有受保護的可見性,因此您將收到錯誤

覆蓋'protected'繼承成員時,無法更改訪問修飾符

您可以通過在派生類中提供set protected protected visibility來修復它:

class Derived : Base {
    public override object Var {
        get { return null; }
        protected set { // <------ added protected here
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM