使用私有setter继承了自动实现的属性
本文关键字:实现 属性 继承 setter | 更新日期: 2023-09-27 18:02:34
我有一个基类和一个派生类。每个都有相同的属性,该属性有一个private
设置器,因此该值可以由类内的一些逻辑设置。
class First
{
internal virtual int Value { get; private set; }
void SetValue(int toValue)
{
Value = toValue;
}
}
class Second : First
{
internal override int Value { get; private set; }
void SetValue(int toValue)
{
Value = toValue;
}
}
这导致编译器错误:
属性或索引器。。。不能在此上下文中使用,因为set访问器不可访问。
为什么会这样,我如何才能实现我想要做的事情?对于自动实现的属性,这是不可能的吗?换句话说,我是否必须使用后备字段?
Second
将无法从First
中set
Value
的值,因为Value
的设置器是private
。如果您需要您的子类能够设置它,那么它需要是基中的protected
。
Getters和Setter基本上是方法。不能覆盖看不到的方法。在这种情况下,virtual
仅适用于getter,因为virtual private
是不允许的。
这不仅仅是因为你看不到它来使用它,你根本无法覆盖它。