每个实体我有两个班级;一个用于表示单个项目,另一个用于表示这些实体的集合;
对于单个实体(BaseItem<-MenuItem)
,我有BaseItem
继承自的基类MenuItem
。
对于MenuItems的集合,我有以下层次结构; (List<T> <- BaseItemList<MenuItem> <- MenuItemList)
。
现在,每当我使用下面的代码来缓存MenuItem(MenuItemList)的集合时,它都能正常工作 没有错误;
using (var client = _manager.GetClient()) {
IRedisTypedClient<T> typeObject = client.As<T>();
typeObject.SetEntry(key, value);
}
然而,当我尝试从redis中检索它时,我得到以下错误;
using (var client = _manager.GetClient()) {
if (client.ContainsKey(key)) {
IRedisTypedClient<T> typeObject = client.As<T>();
cachedObject = typeObject.GetValue(key);
}
}
错误:
对象引用未设置为对象的实例。
栈跟踪
at System.Collections.Generic.List`1.Add(T item)
at ServiceStack.Text.Common.DeserializeListWithElements`2.ParseGenericList(String value, Type createListType, ParseStringDelegate parseFn)
at ServiceStack.Text.Common.DeserializeList`2.<>c__DisplayClass3.<GetParseFn>b__0(String value)
at ServiceStack.Text.Json.JsonReader`1.Parse(String value)
at ServiceStack.Text.JsonSerializer`1.DeserializeFromString(String value)
at ServiceStack.Redis.Generic.RedisTypedClient`1.DeserializeValue(Byte[] value)
at ServiceStack.Redis.Generic.RedisTypedClient`1.GetValue(String key)
at TryoutStuff.Program.Main(String[] args) in c:\Users\Orson\Documents\Visual Studio 2012\Projects\ICS\TryoutStuff\Program.cs:line 75
我该怎么做?
答案 0 :(得分:0)
错误消息将其删除
typeObject.GetValue(key)返回一个值,但是期望将cachedObject分配给实际的对象实例。