我有一个基类和一个派生类。每个都具有相同的属性,其具有private
setter,因此可以通过类中的某些逻辑来设置该值。
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;
}
}
这导致编译器错误:
属性或索引器...不能在此上下文中使用,因为 设置访问者无法访问。
为什么会这样,我怎样才能实现我想做的事情?这是不可能使用自动实现的属性,换句话说,我是否必须使用支持字段?
答案 0 :(得分:1)
Second
的设置者为set
, Value
将无法First
Value
private
的值protected
。如果您需要子类来设置它,则它必须在基础中为Collections.sort()
。
答案 1 :(得分:0)
Getters和Setter基本上是方法。您无法覆盖您看不到的方法。在这种情况下,virtual
仅适用于getter,因为virtual private
是不允许的。
不仅仅是你看不到使用它,你根本无法覆盖它。