[英]Cannot override property's protected set
I have the following base class: 我有以下基类:
abstract class Base
{
public abstract object Var
{
get;
protected set;
}
}
And this derived class: 而这个派生类:
class Derived : Base
{
public override object Var
{
get {//code here
}
set {//code here -- I get error here!
}
}
}
But I'm getting this error: 但是我收到了这个错误:
Cannot change access modifier when overriding 'protected' inherited member 'Var'
覆盖'protected'继承成员'Var'时无法更改访问修饰符
I tried adding a protected
and private
keywords before set but it didn't help. 我尝试在设置之前添加
protected
和private
关键字,但它没有帮助。 How do I fix this? 我该如何解决?
UPDATE: 更新:
The base class must make sure that subclasses provide a value for Var
at creation time. 基类必须确保子类在创建时为
Var
提供值。 So I need to have the setter declared in Base class. 所以我需要在Base类中声明setter。
Alternatively, I could declare a private member variable to do this and remove the setter, but that is not an option as discussed here . 或者,我可以声明一个私有成员变量来执行此操作并删除setter,但这不是这里讨论的选项。
The problem is that the set
in your derived class has public
visiblity—since you didn't specify protected
explicitly. 问题是派生类中的
set
具有public
可见性 - 因为您没有明确指定protected
。 Since this property's set has protected visibility in your base class, you're getting the error 由于此属性的集合在基类中具有受保护的可见性,因此您将收到错误
cannot change access modifiers when overriding 'protected' inherited member
覆盖'protected'继承成员时,无法更改访问修饰符
You can fix it by giving the set protected visibility in your derived class: 您可以通过在派生类中提供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.