繁体   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