public override void BSerialize(BinaryWriter writer, FPackageFileSummary summary) { if (Struct.GetType().IsArray) { object[] array = Struct as object[]; foreach (object obj in array) { IStructObject structObject = obj as IStructObject; if (structObject != null) { BSerializer.Serialize(writer, structObject.GetType(), structObject); } else { (obj as UObject)?.BSerialize(writer, summary); } } } else if (Struct is IStructObject) { BSerializer.Serialize(writer, Struct.GetType(), Struct); } else { (Struct as UObject)?.BSerialize(writer, summary); } }
public void Setup() { Serializer = new BSerializer <Person>(); InterfaceSerializer = new BSerializer <IPerson>(); ListSerializer = new BSerializer <List <IPerson> >(); DictionarySerializer = new BSerializer <Dictionary <int, Person> >(); }
public void BSerialize(BinaryWriter writer, FPackageFileSummary summary) { int index = summary.Names.Select((FNameEntry x, int i) => new { name = x.Name, index = i }).First(x => x.name.Equals("None")).index; FName instance = new FName { Index = index }; using (Enumerator enumerator = GetEnumerator()) { while (enumerator.MoveNext()) { FPropertyTag current = enumerator.Current; BSerializer.Serialize(writer, current.GetType(), current); current.BSerialize(writer, summary); } } BSerializer.Serialize(writer, typeof(FName), instance); if (ObjectData != null) { writer.BaseStream.Position += 4L; ObjectData.BSerialize(writer, summary); } }
public override void BSerialize(BinaryWriter writer, FPackageFileSummary summary) { if (EnumName.Name == "None") { writer.Write(Convert.ToByte(Value)); } else { BSerializer.Serialize(writer, typeof(FName), (FName)Value); } }
public void BSerialize(BinaryWriter writer, FPackageFileSummary summary) { writer.Write(base.Count); using (Enumerator enumerator = GetEnumerator()) { while (enumerator.MoveNext()) { KeyValuePair <FName, UObject> current = enumerator.Current; BSerializer.Serialize <FName>(writer, current.Key); current.Value.BSerialize(writer, summary); } } }
public void BSerialize(BinaryWriter writer, FPackageFileSummary summary) { BSerializer.WriteFString(writer, Name); writer.Write(base.Count); using (Enumerator enumerator = GetEnumerator()) { while (enumerator.MoveNext()) { KeyValuePair <string, string> current = enumerator.Current; BSerializer.WriteFString(writer, current.Key); BSerializer.WriteFString(writer, current.Value); } } }
static void Main(string[] args) { CustomSerializer customSerializer = new CustomSerializer(typeof(Person)); BSerializer <Person> serializer = new BSerializer <Person>(); BSerializer <IPerson> serializerInterface = new BSerializer <IPerson>(); BSerializer <List <IPerson> > listSerializer = new BSerializer <List <IPerson> >(); BSerializer <Dictionary <int, Person> > dictSerializer = new BSerializer <Dictionary <int, Person> >(); //string test = var parent = new Person() { age = 32, Address = "Some other place", FirstName = "Parent", LastName = "McParenton", Id = 69 }; parent.Parent = parent; var person = new Person() { age = 41, Id = 123, FirstName = "Bloodthirst", LastName = "Ketsueki", Address = "Some place", Parent = parent }; StreamWriter fileWriter = File.CreateText("D:\\DSerializer - Log.txt"); string serializedPerson = serializer.Serialize(parent); var deserialize = serializer.Deserialize(serializedPerson); string serializedParent = serializer.Serialize(person);; string interfaceSerialized = serializerInterface.Serialize(person); IPerson interfaceDiserialized = serializerInterface.Deserialize(interfaceSerialized); string serialized = serializer.Serialize(person); Person deserialized = serializer.Deserialize(serialized); List <IPerson> list = new List <IPerson>() { person, parent }; string serializedList = listSerializer.Serialize(list); List <IPerson> deserializedList = listSerializer.Deserialize(serializedList); fileWriter.Write("/// List ///"); fileWriter.Write(Environment.NewLine); fileWriter.Write(Environment.NewLine); fileWriter.Write(serializedList); fileWriter.Write(Environment.NewLine); fileWriter.Write(Environment.NewLine); fileWriter.Write("/// Object ///"); fileWriter.Write(Environment.NewLine); fileWriter.Write(Environment.NewLine); fileWriter.Write(serializedPerson); fileWriter.Write(Environment.NewLine); fileWriter.Write(Environment.NewLine); fileWriter.Write(Environment.NewLine); fileWriter.Write(Environment.NewLine); fileWriter.Write(Environment.NewLine); fileWriter.Write(Environment.NewLine); fileWriter.Dispose(); }