下面是“Google.Protobuf工具在C#中的使用方法”的完整攻略:
前置条件
在使用 Google.Protobuf 工具之前你需要安装 .NET Core SDK 和 Google.Protobuf 工具,安装方法如下:
-
安装 .NET Core SDK
(1) 下载 .NET Core SDK(选择最新版本)安装包。
(2) 执行安装包,一路点击“下一步”即可。
(3) 验证安装,打开命令提示符(或 PowerShell 或终端)窗口,运行命令dotnet --version
,如果输出了版本号,则说明安装成功。 -
安装 Google.Protobuf 工具
(1) 打开命令提示符(或 PowerShell 或终端)窗口,运行命令dotnet tool install --global dotnet-protobuf
,等待安装完成。
(2) 验证安装,运行命令dotnet protobuf --version
,如果输出了版本号,则说明安装成功。
使用Google.Protobuf工具
1. 编写 .proto 文件
在使用 Google.Protobuf 工具之前,需要先编写一个 .proto 文件,在文件中定义需要序列化的数据类型,示例如下:
syntax = "proto3";
package MyPackage;
message Person {
string name = 1;
int32 age = 2;
}
其中,syntax
表示使用的语法版本,package
表示定义的包名,message
表示定义的消息体,name
和 age
是消息体中的字段,1
, 2
表示字段的编号,编号必须是正整数,编号唯一且连续。
2. 编译 .proto 文件
在编写好 .proto 文件后,需要使用 Google.Protobuf 工具将其编译为 C# 代码,示例如下:
dotnet protobuf compile -I ./protos --csharp_out=./models ./protos/person.proto
其中,-I
表示指定包含 .proto 文件的路径,--csharp_out
表示将编译生成的 C# 代码输出到指定的路径,./protos/person.proto
表示需要编译的 .proto 文件的路径。
编译成功后,会在指定的路径(./models
)下生成一个 C# 代码文件(person.cs
),可直接使用其中定义的类型。下面是一个使用示例:
示例 1:序列化和反序列化
using System;
using System.IO;
using MyPackage;
class Program
{
static void Main(string[] args)
{
Person person = new Person
{
Name = "Alice",
Age = 18
};
// 将对象序列化为字节数组
byte[] data = person.ToByteArray();
// 将字节数组反序列化为对象
Person deserializedPerson = Person.Parser.ParseFrom(data);
Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
}
}
示例 2:使用文本格式
Google.Protobuf 还支持将对象序列化为文本格式,示例如下:
using System;
using System.IO;
using MyPackage;
class Program
{
static void Main(string[] args)
{
Person person = new Person
{
Name = "Alice",
Age = 18
};
// 将对象序列化为文本格式
string text = person.ToString();
// 将文本反序列化为对象
Person deserializedPerson = Person.Parser.ParseText(text);
Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
}
}
以上就是使用 Google.Protobuf 工具在 C# 中进行序列化和反序列化的两个示例,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Google.Protobuf工具在C#中的使用方法 - Python技术站