我有一个抽象类,它的抽象属性设置为同时具有 Get 和 Set。我知道我总是希望能够从派生类中获取此属性,但在某些情况下,在某些类型的派生类中设置此属性没有意义。
我不能只在派生类中省略 Set 访问器(参见下面的代码示例)。我可以覆盖派生类中的 set 访问器,对用户传递的值不做任何事情。但是有没有另一种方法可以使特定派生类中的属性成为只读?最终,我将在属性网格中显示这些属性,并且我不希望用户将值输入到不会执行任何操作的字段中。也许我只是在特定的派生类中将该属性属性为只读?
此外,我真的不想弄乱任何类型描述符的东西来让属性在属性网格中正确显示,例如覆盖 ICustomTypeDescriptor。
public abstract class MyClass
{
public abstract string MyProperty
{
get;
set;
}
}
public abstract class MyDerivedClass
{
public override string MyProperty
{
//VS complains that the Set accessor is missing
get;
}
}