我有以下基类:
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 } } }