diff --git a/TLSharp.Core/TelegramClient.cs b/TLSharp.Core/TelegramClient.cs index f505526..e42f6df 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).dc_options.lists; + dcOptions = ((TLConfig)invokewithLayer.Response).dc_options.ToList(); return true; } diff --git a/TLSharp.Tests/TLSharpTests.cs b/TLSharp.Tests/TLSharpTests.cs index 487b535..54e7546 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() { user_id = 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..6c3663a 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,13 @@ 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 => ((IList)lists)[index]; set => ((IList)lists)[index] = value; } + public override int Constructor { get @@ -19,6 +23,30 @@ namespace TeleSharp.TL } } + public int Count => ((IList)lists).Count; + + public bool IsReadOnly => ((IList)lists).IsReadOnly; + + public void Add(T item) + { + ((IList)lists).Add(item); + } + + public void Clear() + { + ((IList)lists).Clear(); + } + + public bool Contains(T item) + { + return ((IList)lists).Contains(item); + } + + public void CopyTo(T[] array, int arrayIndex) + { + ((IList)lists).CopyTo(array, arrayIndex); + } + public override void DeserializeBody(BinaryReader br) { int count = br.ReadInt32(); @@ -51,6 +79,31 @@ namespace TeleSharp.TL } } + public IEnumerator GetEnumerator() + { + return ((IList)lists).GetEnumerator(); + } + + public int IndexOf(T item) + { + return ((IList)lists).IndexOf(item); + } + + public void Insert(int index, T item) + { + ((IList)lists).Insert(index, item); + } + + public bool Remove(T item) + { + return ((IList)lists).Remove(item); + } + + public void RemoveAt(int index) + { + ((IList)lists).RemoveAt(index); + } + public override void SerializeBody(BinaryWriter bw) { bw.Write(Constructor); @@ -86,5 +139,10 @@ namespace TeleSharp.TL } } } + + IEnumerator IEnumerable.GetEnumerator() + { + return ((IList)lists).GetEnumerator(); + } } }