/// <summary> /// 查询列表。 /// </summary> /// <returns></returns> internal List <T> GetListOf <T>() where T : class, IListable { if (Status != ClientStatus.Active) { throw new InvalidOperationException("尚未登录,无法进行该操作"); } List <T> tempData; if (_cache.GetCache <List <T> >().TryGetValue(out tempData)) { Logger.Debug("加载了缓存的" + typeof(T).Name + "列表"); return(tempData); } // 为了性能所以不使用reflection而采用硬编码 List <T> result; switch (typeof(T).Name) { case "ChatHistory": result = (List <T>)(object) ChatHistory.GetList(this); break; case "Discussion": result = (List <T>)(object) Discussion.GetList(this); break; case "Friend": result = (List <T>)(object) Friend.GetList(this); break; case "FriendCategory": result = (List <T>)(object) FriendCategory.GetList(this); break; case "FriendStatus": result = (List <T>)(object) FriendStatus.GetList(this); break; case "Group": result = (List <T>)(object) Group.GetList(this); break; default: throw new ArgumentOutOfRangeException(); } _cache.GetCache <List <T> >().SetValue(result); return(result); }