获取c# protobuf OriginalName信息
时间: 2023-06-30 22:17:46 浏览: 204
基于protobuf-net的C# Protobuf 插件.zip
在 C# 的 protobuf 中,可以使用 `ProtoBuf.ProtoContract` 特性为消息类或成员属性指定 `Name` 和 `OriginalName`,其中 `Name` 指定序列化后的字段名,`OriginalName` 则指定原始的字段名。
获取 `OriginalName` 信息可以使用 `ProtoBuf.Meta.RuntimeTypeModel` 类的 `GetSchema` 方法,示例如下:
```csharp
using ProtoBuf.Meta;
RuntimeTypeModel.Default.GetSchema(typeof(YourProtoMessage), out string schema);
// 解析 schema 获取 OriginalName 信息
```
其中 `YourProtoMessage` 是你的 protobuf 消息类,`schema` 是解析后的协议描述字符串,其中包含了该消息类的所有信息,包括 `OriginalName`。
注意,这种方法需要解析协议描述字符串,可能比较繁琐,建议使用时根据实际情况评估。如果只需要获取单个属性的 `OriginalName`,可以直接使用该属性的 `ProtoBuf.ProtoMember` 特性的 `OriginalName` 属性获取。
阅读全文