mirror of
https://github.com/sochix/TLSharp.git
synced 2026-04-07 15:36:23 +00:00
Redesign Everything
This commit is contained in:
parent
b5472c6cd7
commit
6af7c66a81
710 changed files with 32932 additions and 302 deletions
50
TeleSharp.TL/ObjectDeserializer.cs
Normal file
50
TeleSharp.TL/ObjectDeserializer.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using TeleSharp.TL;
|
||||
namespace TeleSharp.TL
|
||||
{
|
||||
public class ObjectUtils
|
||||
{
|
||||
public static object DeserializeObject(BinaryReader reader)
|
||||
{
|
||||
int Constructor = reader.ReadInt32();
|
||||
object obj;
|
||||
Type t =null;
|
||||
try {
|
||||
t = TLContext.getType(Constructor);
|
||||
obj = Activator.CreateInstance(t);
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
throw new InvalidDataException("Constructor Invalid Or Context.Init Not Called !");
|
||||
}
|
||||
if (t.IsSubclassOf(typeof(TLMethod)))
|
||||
{
|
||||
((TLMethod)obj).deserializeResponse(reader);
|
||||
return obj;
|
||||
}
|
||||
else if (t.IsSubclassOf(typeof(TLObject)))
|
||||
{
|
||||
((TLObject)obj).DeserializeBody(reader);
|
||||
return obj;
|
||||
}
|
||||
else throw new NotImplementedException("Weird Type : " + t.Namespace + " | " + t.Name);
|
||||
}
|
||||
public static void SerializeObject(object obj,BinaryWriter writer)
|
||||
{
|
||||
((TLObject)obj).SerializeBody(writer);
|
||||
}
|
||||
public static TLVector<T> DeserializeVector<T>(BinaryReader reader)
|
||||
{
|
||||
if (reader.ReadInt32() != 481674261) throw new InvalidDataException("Bad Constructor");
|
||||
TLVector<T> t = new TLVector<T>();
|
||||
t.DeserializeBody(reader);
|
||||
return t;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue