为什么HttpSessionState没有实现IDictionary?

mag*_*tic 6 .net c# asp.net session dictionary

HttpSessionState似乎是典型的key - > value集合,那么为什么它不实现IDictionary -Interface?

背景:我正在尝试在发生错误时输出/保存我的ASP.NET网站的上下文,并希望使用递归函数执行此操作,该函数输出集合并且所有包含集合.由于HttpSessionState只实现ICollection和IEnumerable,我失去对密钥的信息,如果我想这样做在一个通用的方式(=与接口的工作).

Bil*_*eal 7

IDictionary意味着目标集合能够按键快速查找.(据我所知)HttpSessionState只是一个项目列表,而不是字典样式结构.由于搜索该结构需要线性时间,因此没有理由将其视为字典.如果您需要大量快速查找,请将键和值复制到真正的字典中.如果您不需要快速查找,那么您只需要专门针对该类.

接口有很多东西,而不仅仅是方法原型列表.还需要为接口保留语义.按密钥快速查找是任何(大多数)消费者的非显式假设IDictionary.