我迫切需要在ASP.NET中镜像Session集合的行为(就检索项目时的行为而言)。我已经花了很长时间在这上面,但迄今为止无处可去。
会话就像一个字典,但是如果你访问一个Session并且该值不存在,那么你得到null
而不是抛出一个异常。这就是我需要复制的全部内容。
我尝试重写索引器以添加空检查,但它会引发堆栈溢出异常:
public class CriteriaCollection : Dictionary<string, object>
{
private object GetData(string key)
{
object value = null;
if (this.ContainsKey(key))
{
value = this[key];
}
return value;
}
private void SetData(string key, object value)
{
this[key] = value;
}
public new object this[string key]
{
get { return GetData(key); }
set { SetData(key, value); }
}
}
答案 0 :(得分:7)
当您创建自己的索引器时,您希望在自己的代码中调用旧的索引器。
在代码中将this[key]
替换为base[key]
。