This commit is contained in:
Ilya P 2016-10-29 09:53:45 +03:00
parent 263685f050
commit df66bfb6e3

View file

@ -10,7 +10,7 @@ namespace TeleSharp.TL
public class TLVector<T> : TLObject public class TLVector<T> : TLObject
{ {
[TLObject(481674261)] [TLObject(481674261)]
public List<T> lists = new List<T>() ; public List<T> lists = new List<T>();
public override int Constructor public override int Constructor
{ {
get get
@ -22,21 +22,21 @@ namespace TeleSharp.TL
public override void DeserializeBody(BinaryReader br) public override void DeserializeBody(BinaryReader br)
{ {
int count = br.ReadInt32(); int count = br.ReadInt32();
for(int i= 0;i< count;i++) for (var i = 0; i < count; i++)
{ {
if (typeof(T) == typeof(int)) if (typeof(T) == typeof(int))
{ {
lists.Add((T)Convert.ChangeType(br.ReadInt32(),typeof(T))); lists.Add((T)Convert.ChangeType(br.ReadInt32(), typeof(T)));
} }
else if (typeof(T)==typeof(long)) else if (typeof(T) == typeof(long))
{ {
lists.Add((T)Convert.ChangeType(br.ReadInt64(), typeof(T))); lists.Add((T)Convert.ChangeType(br.ReadInt64(), typeof(T)));
} }
else if (typeof(T) ==typeof(string)) else if (typeof(T) == typeof(string))
{ {
lists.Add((T)Convert.ChangeType(StringUtil.Deserialize(br), typeof(T))); lists.Add((T)Convert.ChangeType(StringUtil.Deserialize(br), typeof(T)));
} }
else if(typeof(T)==typeof(double)) else if (typeof(T) == typeof(double))
{ {
lists.Add((T)Convert.ChangeType(br.ReadDouble(), typeof(T))); lists.Add((T)Convert.ChangeType(br.ReadDouble(), typeof(T)));
} }
@ -53,13 +53,38 @@ namespace TeleSharp.TL
public override void SerializeBody(BinaryWriter bw) public override void SerializeBody(BinaryWriter bw)
{ {
bw.Write(Constructor); bw.Write(Constructor);
bw.Write(lists.Count()); bw.Write(lists.Count());
foreach (var item in lists.Cast<TLObject>()) foreach (var item in lists)
{ {
item.SerializeBody(bw); if (typeof(T) == typeof(int))
} {
var res = (int)Convert.ChangeType(item, typeof(int));
bw.Write(res);
}
else if (typeof(T) == typeof(long))
{
var res = (long)Convert.ChangeType(item, typeof(long));
bw.Write(res);
}
else if (typeof(T) == typeof(string))
{
var res = (string)(Convert.ChangeType(item, typeof(string)));
StringUtil.Serialize(res, bw);
}
else if (typeof(T) == typeof(double))
{
var res = (double)Convert.ChangeType(item, typeof(double));
bw.Write(res);
}
else if (typeof(T).BaseType == typeof(TLObject))
{
var res = (TLObject) (Convert.ChangeType(item, typeof (TLObject)));
res.SerializeBody(bw);
}
}
} }
} }
} }