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