【发布时间】:2011-08-17 22:29:14
【问题描述】:
可以只序列化类的几个属性吗? 例如:
public class Client
{
[ProtoMember(1)]
public int Id { get; set; }
[ProtoMember(2)]
public string Name { get; set; }
public int Age { get; set; }
[ProtoMember(3)]
public string Guid { get; set; }
}
因此,我得到的“Id”值不正确。其他属性正确。 如果我用“[ProtoMember]”填充所有属性,则“id”的值是正确的。 为什么?
实际上这个错误是由其他原因引起的,你可以帮助我。
我将 String 转换为 Stream 以执行任务。及时扭转这种转换,我的 Id 值有误
var cli = new Client
{ Id = 222, Guid = "52369-fe5r6-74e2g-j1i4e", Age = 29, Name = "José"};
//Serialize
var ms = new MemoryStream();
Serializer.Serialize(ms, cli);
ms.Position = 0;
var reader = new StreamReader(ms);
var strStream = reader.ReadToEnd();
//Deserialize
var ms2 = new MemoryStream(Encoding.UTF8.GetBytes(strStream));
var obj = Serializer.Deserialize<Client>(ms2);
因此,任何高于 127 的值都将转换为不同的 Int。例如:3104751
我的转换有误?
Obs:对不起英语不好
【问题讨论】:
-
(我是 protobuf-net 的作者)编写的类很好(只要您添加
[ProtoContract],正如 alfonso 所建议的那样)。请澄清您所说的““Id”的值不正确”是什么意思-您看到了什么? -
(在您的编辑中添加了答案)
标签: c# protobuf-net