Exemple #1
0
        /// <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);
        }