Make TLVector implement IList

This commit is contained in:
Afshin Arani 2017-11-09 01:52:29 -08:00 committed by Andres G. Aragoneses
parent d769dd3c2f
commit 659becfd51
3 changed files with 74 additions and 12 deletions

View file

@ -76,7 +76,7 @@ namespace TLSharp.Core
await _sender.Send(invokewithLayer);
await _sender.Receive(invokewithLayer);
dcOptions = ((TLConfig)invokewithLayer.Response).DcOptions.lists;
dcOptions = ((TLConfig)invokewithLayer.Response).DcOptions.ToList();
return true;
}

View file

@ -171,7 +171,7 @@ namespace TLSharp.Tests
var result = await client.GetContactsAsync();
var user = result.Users.lists
var user = result.Users
.OfType<TLUser>()
.FirstOrDefault(x => x.Phone == normalizedNumber);
@ -192,7 +192,7 @@ namespace TLSharp.Tests
await client.ConnectAsync();
var dialogs = (TLDialogs) await client.GetUserDialogsAsync();
var chat = dialogs.Chats.lists
var chat = dialogs.Chats
.OfType<TLChannel>()
.FirstOrDefault(c => c.Title == "TestGroup");
@ -207,7 +207,7 @@ namespace TLSharp.Tests
var result = await client.GetContactsAsync();
var user = result.Users.lists
var user = result.Users
.OfType<TLUser>()
.FirstOrDefault(x => x.Phone == NumberToSendMessage);
@ -223,7 +223,7 @@ namespace TLSharp.Tests
var result = await client.GetContactsAsync();
var user = result.Users.lists
var user = result.Users
.OfType<TLUser>()
.FirstOrDefault(x => x.Phone == NumberToSendMessage);
@ -245,13 +245,13 @@ namespace TLSharp.Tests
var result = await client.GetContactsAsync();
var user = result.Users.lists
var user = result.Users
.OfType<TLUser>()
.FirstOrDefault(x => x.Phone == NumberToSendMessage);
var inputPeer = new TLInputPeerUser() { UserId = user.Id };
var res = await client.SendRequestAsync<TLMessagesSlice>(new TLRequestGetHistory() { Peer = inputPeer });
var document = res.Messages.lists
var document = res.Messages
.OfType<TLMessage>()
.Where(m => m.Media != null)
.Select(m => m.Media)
@ -280,7 +280,7 @@ namespace TLSharp.Tests
var result = await client.GetContactsAsync();
var user = result.Users.lists
var user = result.Users
.OfType<TLUser>()
.FirstOrDefault(x => x.Id == 5880094);
@ -352,7 +352,7 @@ namespace TLSharp.Tests
var result = await client.SearchUserAsync(UserNameToSendMessage);
var user = result.Users.lists
var user = result.Users
.Where(x => x.GetType() == typeof(TLUser))
.OfType<TLUser>()
.FirstOrDefault(x => x.Username == UserNameToSendMessage.TrimStart('@'));
@ -361,7 +361,7 @@ namespace TLSharp.Tests
{
var contacts = await client.GetContactsAsync();
user = contacts.Users.lists
user = contacts.Users
.Where(x => x.GetType() == typeof(TLUser))
.OfType<TLUser>()
.FirstOrDefault(x => x.Username == UserNameToSendMessage.TrimStart('@'));

View file

@ -1,4 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@ -7,10 +8,17 @@ using System.Threading.Tasks;
namespace TeleSharp.TL
{
public class TLVector<T> : TLObject
public class TLVector<T> : TLObject, IList<T>
{
[TLObject(481674261)]
public List<T> lists = new List<T>();
private List<T> lists = new List<T>();
public T this[int index]
{
get { return lists[index]; }
set { lists[index] = value; }
}
public override int Constructor
{
get
@ -19,6 +27,30 @@ namespace TeleSharp.TL
}
}
public int Count => lists.Count;
public bool IsReadOnly => ((IList<T>)lists).IsReadOnly;
public void Add(T item)
{
lists.Add(item);
}
public void Clear()
{
lists.Clear();
}
public bool Contains(T item)
{
return lists.Contains(item);
}
public void CopyTo(T[] array, int arrayIndex)
{
lists.CopyTo(array, arrayIndex);
}
public override void DeserializeBody(BinaryReader br)
{
int count = br.ReadInt32();
@ -51,6 +83,31 @@ namespace TeleSharp.TL
}
}
public IEnumerator<T> GetEnumerator()
{
return lists.GetEnumerator();
}
public int IndexOf(T item)
{
return lists.IndexOf(item);
}
public void Insert(int index, T item)
{
lists.Insert(index, item);
}
public bool Remove(T item)
{
return lists.Remove(item);
}
public void RemoveAt(int index)
{
lists.RemoveAt(index);
}
public override void SerializeBody(BinaryWriter bw)
{
bw.Write(Constructor);
@ -86,5 +143,10 @@ namespace TeleSharp.TL
}
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return lists.GetEnumerator();
}
}
}