加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 无法覆盖属性的受保护集

发布时间:2020-12-15 08:29:59 所属栏目:百科 来源:网络整理
导读:我有以下基类: 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! } }} 但是我收到了这个错误:
我有以下基类:
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!
  }
 }
}

但是我收到了这个错误:

Cannot change access modifier when overriding ‘protected’ inherited member ‘Var’

我尝试在设置之前添加受保护和私有关键字,但它没有帮助.我该如何解决?

更新:
基类必须确保子类在创建时为Var提供值.所以我需要在Base类中声明setter.
或者,我可以声明一个私有成员变量来执行此操作并删除setter,但这不是here讨论的选项.

解决方法

问题是派生类中的集合具有公共可见性 – 因为您没有明确指定protected.由于此属性的集合在基类中具有受保护的可见性,因此您将收到错误

cannot change access modifiers when overriding ‘protected’ inherited member

您可以通过在派生类中提供set protected protected visibility来修复它:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读