Protobuf-net 섭수 기록

1789 단어
배경: Protobuf가 C# 컨트롤러의 사용법을 알게 된 후 유닛을 구하려고 신이 났는데, 유닛 5는 여전히 지원만 되는 것을 발견했다.net3.5, 동쪽에서 서쪽을 찾아보세요. 어떤 사람은 Protobuf-net을 사용하고, 어떤 사람은 Protobuf-csharp-port을 사용해도 된다고 해요. Protobuf-net을 골라서 해보세요.

Protobu-net
1.VS 2017 창설.net3.5의 dll 프로젝트, 유닛 프로젝트의 Plugins 디렉터리에 dll로 패키지 패키지
2. Protobuf 작성
    // 
    [ProtoContract]
    class Person {
        [ProtoMember(1)]
        public int Id {get;set;}
        [ProtoMember(2)]
        public string Name {get;set;}
        [ProtoMember(3)]
        public Address Address {get;set;}
    }
    [ProtoContract]
    class Address {
        [ProtoMember(1)]
        public string Line1 {get;set;}
        [ProtoMember(2)]
        public string Line2 {get;set;}
    }

3. Protobuf 객체 시리얼화
    //   FileStream        ,       
    using (var file = File.Create("person.bin")) {
        Serializer.Serialize(file, person);
    }

    //   MemoryStream        ,   byte  
    using (MemoryStream stream = new MemoryStream()){
        ProtoBuf.Serializer.Serialize(stream,my);
        byte[] result = new byte[stream.Length];
        stream.Position = 0;
        stream.Read(result,0,result.Length);
        stream.Close();
        return result;
    }


4. Protobuf 객체 역정렬
    //   FileStream         ,   Protobuf  
    using (var file = File.OpenRead("person.bin")) {
        newPerson = Serializer.Deserialize(file);
    }
    
    //   MemoryStream        ,   Protobuf  
    using(MemoryStream stream = new MemoryStream()){
        stream.Write(info,0,info.Length);
        stream.Position = 0;
        Hello hello =ProtoBuf.Serializer.Deserialize(stream);
        stream.Close();
    }

좋은 웹페이지 즐겨찾기