using Net.Serialize; using Net.Share; using Net.System; namespace BITKit { public class BITSerializeAdapter : ISerializeAdapter { public bool IsEncrypt { get; set; } public int Password { get; set; } public byte[] OnSerializeRpc(RPCModel model) { for (var i = 0; i < model.pars.Length; i++) { var obj = model.pars[i]; if (!BITBinary.TryWrite(obj, out var buffer)) { //NetConvertFast2.AddSerializeType(obj.GetType()); //buffer = NetConvertFast2.SerializeObject(obj); //buffer = JsonHelper.GetBytes(obj); } model.pars[i] = buffer; } return NetConvertFast2.SerializeModel(model); } public FuncData OnDeserializeRpc(byte[] buffer, int index, int count) { var model = NetConvertFast2.DeserializeModel(buffer); for (var i = 0; i < model.pars.Length; i++) { var obj = model.pars[i]; if (obj is not byte[] bytes) continue; var value = BITBinary.ReadAsValue(bytes); model.pars[i] = value; } return model; } public byte[] OnSerializeOpt(OperationList list) { return NetConvertFast2.SerializeObject(list).ToArray(true); } public OperationList OnDeserializeOpt(byte[] buffer, int index, int count) { var segment = new Segment(buffer, index, count, false); return NetConvertFast2.DeserializeObject(segment); } } }