private string ProcessMessageFilter(VkMessageFilter filter)
        {
            string response = string.Empty;
            switch (filter)
            {
                case VkMessageFilter.NotChat:
                    response = "2";
                    break;
                case VkMessageFilter.NeverReaded:
                    response = "1";
                    break;

                case VkMessageFilter.FromFriends:
                    response = "4";
                    break;

                default:
                    return string.Empty;
            }
            return response;
        }
        /// <summary>
        /// Получение списка сообщений
        /// </summary>
        /// <param name="mout">если этот параметр равен 1, сервер вернет исходящие сообщения</param>
        /// <param name="offset">смещение, необходимое для выборки определенного подмножества сообщений</param>
        /// <param name="count">количество сообщений, которое необходимо получить (но не более 100). </param>
        /// <param name="filter">Фильтр сообщений</param>
        /// <param name="previewLength">Количество симоволов по которому нужно обрезать сообщение.(по умолчанию 90).</param>
        /// <param name="timeoffset">Макисмальное время прошедшее с момента отправки сообщения до текущего момента в секундах. 0, если Вы хотите получить сообщения любой давности.</param>
        /// <returns>Список сообщений</returns>
        public List<UserMessage> GetUserMessages(string mout, string offset, string count, VkMessageFilter filter, string previewLength, string timeoffset)
        {
            if (IsConnected && (Settings & (int)VKSettings.ExMessages) != 0)
            {
                List<VKParameter> parameters = new List<VKParameter>();
                if (!string.IsNullOrEmpty(mout))
                    parameters.Add(new VKParameter("out", mout));
                if (!string.IsNullOrEmpty(offset))
                    parameters.Add(new VKParameter("offset", offset));

                if (!string.IsNullOrEmpty(count))
                    parameters.Add(new VKParameter("count", count));

                if (!string.IsNullOrEmpty(ProcessMessageFilter(filter)))
                    parameters.Add(new VKParameter("filter", ProcessMessageFilter(filter)));

                if (!string.IsNullOrEmpty(previewLength))
                    parameters.Add(new VKParameter("preview_length", previewLength));

                if (!string.IsNullOrEmpty(timeoffset))
                    parameters.Add(new VKParameter("time_offset", timeoffset));

                XmlDocument doc = ExecuteMethodByToken("messages.get", parameters);
                if (!HasError(doc))
                {
                    DataSet ds = new DataSet("tempDS");
                    StringReader sr = new StringReader(doc.InnerXml);
                    ds.ReadXml(sr, XmlReadMode.InferSchema);
                    List<UserMessage> messages = null;
                    if (ds.Tables["message"] != null && ds.Tables["message"].Rows.Count > 0)
                    {
                        messages = new List<UserMessage>(ds.Tables["message"].Rows.Count);
                        foreach (DataRow dr in ds.Tables["message"].Rows)
                        {
                            if (ds.Relations.Contains("message_attachment"))
                            {
                                DataRow[] rows = dr.GetChildRows(ds.Relations["message_attachment"]);
                                if (rows != null && rows.Length > 0)
                                {
                                    messages.Add(new UserMessage(dr, rows[0]));
                                }
                            }
                            messages.Add(new UserMessage(dr));
                        }
                    }
                    return messages;
                }
                else return null;
            }
            return null;
        }