JasonXuDeveloper / Nino

Definite useful and high performance serialization library for any C# projects, including but not limited to .NET Core apps or Unity/Godot games.
https://nino.xgamedev.net
MIT License
468 stars 44 forks source link

序列化成功后 反序列化失败 #32

Closed LiuZhanMingFpy closed 2 years ago

LiuZhanMingFpy commented 2 years ago

using System;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
using 协议;
using System.Runtime.Serialization.Formatters.Binary;
class MainClass
{
    public static void Main(string[] args)
    {
        MessagePackage package = new MessagePackage
        {
            agreement = AgreementType.Move,
            move = new Move(1, 2, 3, 4, 5, 6, 7)
        };

        var a = Nino.Serialization.Serializer.Serialize<MessagePackage>(package);
        var b = Nino.Serialization.Deserializer.Deserialize<MessagePackage>(a);
        Console.WriteLine(b.move.x);
    }
}
 public enum AgreementType
    {
        Enter = 1,
        EnemyEnter = 2,
        List = 3,
        Move = 4,
        ReadyCreatEnemy = 5,
        OnGameEnd = 6,
        Attack = 7,
        Hit = 7,
        OnHit = 8,
        ReadyDTDown = 9,
        ReadyDTUp = 10,
        GetTime = 11,
        GetID = 12,
    }
   [NinoSerialize(true)]
    public partial class  MessagePackage
    {
        public AgreementType agreement;
        public Move move;
    }
  [NinoSerialize]
    public partial class Move 
    {
        [NinoMember(1)]
        public int id;
        [NinoMember(2)]
        public float x;
        [NinoMember(3)]
        public float y;
        [NinoMember(4)]
        public float z;
        [NinoMember(5)]
        public float eulerX;
        [NinoMember(6)]
        public float eulerY;
        [NinoMember(7)]
        public float eulerZ;

        public Move(int id,float x,float y,float z,float eulerX,float eulerY,float eulerZ)
        {
            this.id = id;
            this.x = x;
            this.y = y;
            this.z = z;
            this.eulerX = eulerX;
            this.eulerY = eulerY;
            this.eulerX = eulerZ;
        }

    }
JasonXuDeveloper commented 2 years ago

已修复,记得需要提供个无参数的构造函数,不然没办法反序列化