有没有办法为只有getter的抽象基类中定义的clr-property声明一个setter(反之亦然)?
abstract class BaseClass {
public abstract string Test {
get;
}
}
class ConcreteClass : BaseClass{
public override string Test {
get { return string.Empty; }
set { /* Some code*/} // This would be really pratically
}
}
同样的问题可能会被要求标记为虚拟的属性。
答案 0 :(得分:4)
幸运的是,这是不可能的。您无法更改现有定义/合同。
有很多方法,比如new
关键字。或使用界面。
答案 1 :(得分:2)
可能有一种解决方法。
在基类中声明受保护的setter,然后在具体类中实现它。
像这样:
abstract class Base
{
public abstract string Test { get; protected set; }
}
class Concrete : Base
{
string s;
public override string Test
{
get { return s; }
protected set { s = value; }
}
}
......但很漂亮,不是: - )