diff --git a/TLSharp.Core/TelegramClient.cs b/TLSharp.Core/TelegramClient.cs index 62eac1b..126370d 100644 --- a/TLSharp.Core/TelegramClient.cs +++ b/TLSharp.Core/TelegramClient.cs @@ -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; } diff --git a/TLSharp.Tests/TLSharpTests.cs b/TLSharp.Tests/TLSharpTests.cs index 319612d..34bca76 100644 --- a/TLSharp.Tests/TLSharpTests.cs +++ b/TLSharp.Tests/TLSharpTests.cs @@ -171,7 +171,7 @@ namespace TLSharp.Tests var result = await client.GetContactsAsync(); - var user = result.Users.lists + var user = result.Users .OfType() .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() .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() .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() .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() .FirstOrDefault(x => x.Phone == NumberToSendMessage); var inputPeer = new TLInputPeerUser() { UserId = user.Id }; var res = await client.SendRequestAsync(new TLRequestGetHistory() { Peer = inputPeer }); - var document = res.Messages.lists + var document = res.Messages .OfType() .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() .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() .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() .FirstOrDefault(x => x.Username == UserNameToSendMessage.TrimStart('@')); diff --git a/TeleSharp.TL/TLVector.cs b/TeleSharp.TL/TLVector.cs index 08e8ae5..4df828b 100644 --- a/TeleSharp.TL/TLVector.cs +++ b/TeleSharp.TL/TLVector.cs @@ -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 : TLObject + public class TLVector : TLObject, IList { [TLObject(481674261)] - public List lists = new List(); + private List lists = new List(); + + 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)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 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(); + } } }