【发布时间】:2011-10-03 02:15:51
【问题描述】:
我有一种特殊类型的字典。我不确定如何准确地做到这一点,但我希望 get 方法是虚拟的,而不是 set 方法:
public TValue this[TKey key]
{
get { ... }
set { ... }
}
有可能吗?如果可以,正确的组合是什么?
【问题讨论】:
-
你想通过只制作getter
virtual来实现什么?可能有更好的方法来做到这一点。 -
只是想扩展我的“ReadOnlyDictionary”。因为它是一个只读字典,所以我不支持 set 方法(抛出异常),但是扩展类可能希望从 get 方法执行额外的工作,因此他们可以覆盖它并修改它。
-
你不应该尝试使“get”方法成为虚拟方法,而是有一些虚拟的“OnGetCalled”方法并让派生类覆盖它。如果不调用 Base 版本,派生类将无法覆盖“get”(即按照 Mark 的建议),因此单独的方法将使合同明确。
标签: c# dictionary properties virtual indexer