protobuff的编译和协议生成C#

https://github.com/protocolbuffers/protobuf/releases

https://www.cnblogs.com/jbw752746541/p/10973200.html

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
E:\OGL3\perfect-client\protoc-3.19.1-win64\bin>protoc.exe -I=E:\OGL3\perfect-client\protoDemo --csharp_out=E:\OGL3\perfect-client\protoDemo E:\OGL3\perfect-client\protoDemo\Person.proto

在这里插入图片描述

在这里插入图片描述

1、序列化测试:

 private static void WriteFile()
        {
    
    
            Console.WriteLine("Hello World!");
            string protoFileName = "Person.bytes";

            Person person = new Person();
            person.Id = 1;
            person.Name = "xiaoming你好";
            person.Email = "[email protected]";
            //person.Phones = new Google.Protobuf.Collections.RepeatedField<Person.Types.PhoneNumber>();

            Person.Types.PhoneNumber phoneNumber = new Person.Types.PhoneNumber();
            phoneNumber.Number = "123456";
            phoneNumber.Type = Person.Types.PhoneType.Mobile;
            person.Phones.Add(phoneNumber);

            using (Stream output = File.OpenWrite(protoFileName))
            {
    
    
                person.WriteTo(output);
            }
        }

2、反序列化

private static void ReadFile()
        {
    
    
            string protoFileName = "Person.bytes";
            using (Stream stream = File.OpenRead(protoFileName))
            {
    
    
                Person person = Person.Parser.ParseFrom(stream);
                Console.WriteLine("Person ID: {0}", person.Id);
                Console.WriteLine("  Name: {0}", person.Name);
                Console.WriteLine("  Email: {0}", person.Email);

                foreach (Person.Types.PhoneNumber phoneNumber in person.Phones)
                {
    
    
                    switch (phoneNumber.Type)
                    {
    
    
                        case Person.Types.PhoneType.Mobile:
                            Console.Write("  Mobile phone #: ");
                            break;
                        case Person.Types.PhoneType.Home:
                            Console.Write("  Home phone #: ");
                            break;
                        case Person.Types.PhoneType.Work:
                            Console.Write("  Work phone #: ");
                            break;
                    }
                    Console.WriteLine(phoneNumber.Number);
                }
            }
        }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里的:在这里插入图片描述
在这里插入图片描述
一定要保证名空间在:namespace Google.Protobuf.Examples.Preson下
否则找不大搜这个this扩展。

Guess you like

Origin blog.csdn.net/wodownload2/article/details/121115935