我在一个混凝土类中有一个只有get
个人的房产.根据定义,这只能在该类的构造函数中设置.后来,我决定希望此属性属于一个构造函数较少的抽象类,具体类从该抽象类继承.如何才能使现在抽象类中的属性只能在子类的构造函数中设置?
不起作用的解决方案:
- 如果我给这个属性一个
protected set
的修饰符,那么允许这个子类拥有比我要求的更多的权力. -
init
不是一个选项,因为我只想在构造函数中设置它. -
readonly
并不总是有效的,因为我使用的是C#7.3.
示例原创类:
public class FooOriginal
{
public int IntHere { get; }
}
抽象类示例:
public abstract class FooAbstract
{
public int IntHere { get; }
}
示例子类
public class FooChild : FooAbstract
{
public FooChild()
{
// Won't compile because IntHere is get-only.
intHere = 3;
}
}