我知道这里已经在 SO 上问过类似的问题,但具体来说,我的问题涉及readonly
通过在抽象类的构造函数中调用虚拟成员来设置字段的场景。
考虑以下抽象类:
public abstract class FooBase
{
private readonly IDictionary<string,object> _readonlyCache;
protected abstract IDictionary<string,object> SetCache();
protected FooBase()
{
_readonlyCache = SetCache();
}
}
问题:
1)这只是糟糕的设计吗?
2)有更好的设计吗?
我知道你可以声明 as 的实现者FooBase
,sealed
这将确保只SetCache()
调用正确的实现。我不喜欢的是没有办法强制实施者必须标记为sealed
. 任何建议都非常受欢迎。