HttpSessionState 看起来像是一个典型的键值对集合,那为什么它没有实现IDictionary 接口呢?
背景:当 ASP.NET 网站出现错误时,我尝试输出/保存其上下文,并希望使用递归函数来输出包含的所有集合。由于 HttpSessionState
只实现了 ICollection
和 IEnumerable
接口,如果我想以通用方式工作(即使用接口),就会丢失关于键的信息。
HttpSessionState 看起来像是一个典型的键值对集合,那为什么它没有实现IDictionary 接口呢?
背景:当 ASP.NET 网站出现错误时,我尝试输出/保存其上下文,并希望使用递归函数来输出包含的所有集合。由于 HttpSessionState
只实现了 ICollection
和 IEnumerable
接口,如果我想以通用方式工作(即使用接口),就会丢失关于键的信息。
IDictionary
接口意味着目标集合能够通过键进行快速查找。(就我所知) HttpSessionState
仅是一个项的列表,而不是字典样式结构。由于对该结构的搜索需要线性时间,因此没有理由将其视为字典。如果您需要大量快速查找,那么请将键和值复制到真正的字典中。如果您不需要快速查找,则只需专门针对该类。
接口中有许多内容,不仅仅是方法原型的列表。还有语义需要保留在接口中。通过键进行快速查找是 (大多数) 消费者对任何IDictionary
的一种非显式假设。