public CSharpAgentType(System.Type type) { this.type = type; unityType = IL.Help.GetField(type, "unity").FieldType; csharpAgentSerialize = BinarySerializable.GetByType(type) as CSharpAgentSerialize; }
} // 类型标识 void ITypeSerialize.WriteTo(object value, IStream ms) { if (value == null) { ms.WriteString(string.Empty); return; } var type = IL.Help.GetInstanceType(value); var serial = type == baseType ? baseTypeSerialize : BinarySerializable.GetByType(type); ms.WriteString(type.FullName); serial.WriteTo(value, ms); }
// 把值写入到ab当中 void ITypeSerialize.WriteTo(object value, Nested.AnyBase ab) { if (value == null) { ab.typeName = string.Empty; return; } var type = IL.Help.GetInstanceType(value); var serial = type == baseType ? baseTypeSerialize : BinarySerializable.GetByType(type); ab.typeName = type.FullName; serial.WriteTo(value, ab); }
// 把值写入到ab当中 void ITypeSerialize.WriteTo(object value, Nested.AnyBase ab) { if (value == null) { ab.valueType = 0; return; } ab.valueType = 1; var type = IL.Help.GetInstanceType(value); var serial = BinarySerializable.GetByType(type); TypeDesc typeDesc = TypeDesc.Get(type); ab.typeName = typeDesc.ToBase64(); serial.WriteTo(value, ab); }
} // 类型标识 void ITypeSerialize.WriteTo(object value, IStream ms) { if (value == null) { ms.WriteByte(0); return; } ms.WriteByte(1); var type = IL.Help.GetInstanceType(value); var serial = BinarySerializable.GetByType(type); TypeDesc td = TypeDesc.Get(type); td.Write(ms); serial.WriteTo(value, ms); }
// 通过ab来设置值 void ITypeSerialize.MergeFrom(ref object value, Nested.AnyBase ab) { if (ab.valueType == 0) { value = null; return; } var typeDesc = TypeDesc.CreateByBase64(ab.typeName); System.Type type = typeDesc.GetCurrentType(); if (value == null || (IL.Help.GetInstanceType(value) != type)) { value = IL.Help.Create(type); } var serial = BinarySerializable.GetByType(type); serial.MergeFrom(ref value, ab); }
void ITypeSerialize.MergeFrom(ref object value, IStream ms) { string fullName = ms.ReadString(); if (string.IsNullOrEmpty(fullName)) { return; } System.Type type; if (value == null || ((type = IL.Help.GetInstanceType(value)).FullName != fullName)) { if (IL.Help.TryGetTypeByFullName(fullName, out type)) { value = IL.Help.Create(type); } } var serial = type == baseType ? baseTypeSerialize : BinarySerializable.GetByType(type); serial.MergeFrom(ref value, ms); }
void ITypeSerialize.MergeFrom(ref object value, IStream ms) { if (ms.ReadByte() == 0) { value = null; return; } TypeDesc td = new TypeDesc(); td.Reader(ms); System.Type type = td.GetCurrentType(); if (value == null || (IL.Help.GetInstanceType(value) != type)) { value = IL.Help.Create(type); } var serial = BinarySerializable.GetByType(type); serial.MergeFrom(ref value, ms); }