如何创建一个类似Session []集合的集合? C#

时间:2014-11-03 16:28:51

标签: c# asp.net generics

我迫切需要在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); }
    }
}

1 个答案:

答案 0 :(得分:7)

当您创建自己的索引器时,您希望在自己的代码中调用旧的索引器。

在代码中将this[key]替换为base[key]