如何创建一个行为类似于会话[]集合的集合?C#
我迫切需要镜像ASP.NET中会话集合的行为(在检索项目时的行为)。我在这上面花了很长时间,但到目前为止什么都没有得到 会话就像一个字典,不同的是,如果您访问一个会话,并且该值不存在,那么您会得到如何创建一个行为类似于会话[]集合的集合?C#,c#,asp.net,generics,C#,Asp.net,Generics,我迫切需要镜像ASP.NET中会话集合的行为(在检索项目时的行为)。我在这上面花了很长时间,但到目前为止什么都没有得到 会话就像一个字典,不同的是,如果您访问一个会话,并且该值不存在,那么您会得到null,而不是抛出异常。这就是我需要复制的全部内容 我尝试重写索引器以添加空检查,但它引发堆栈溢出异常: public class CriteriaCollection : Dictionary<string, object> { private object GetData(st
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); }
}
}
公共类标准集合:字典
{
私有对象GetData(字符串键)
{
对象值=空;
如果(本文件包含密钥))
{
值=此[键];
}
返回值;
}
私有void SetData(字符串键、对象值)
{
此[键]=值;
}
公共新对象此[字符串键]
{
获取{return GetData(key);}
set{SetData(键,值);}
}
}
由于您已经创建了自己的索引器,因此需要在自己的代码中调用旧的索引器
用代码中的
base[key]
替换this[key]
。我是否也应该使用base.ContainsKey?还是没关系?@NickGContainsKey
应该可以正常工作,您没有覆盖它或创建新版本,因此this
和base
版本是相同的。@Silvermind-不,我不能,因为值只能是NameValueCollection中的字符串。我需要其他类型(如int)。@Silvermind,但允许重复键-这并不理想。好的,我删除了我的注释。