Protobuf net 使用protobuf net r275进行数据协定序列化
我刚刚更新到r275版本,它似乎不再正确管理DataContract类 通过序列化这个非常简单的类:Protobuf net 使用protobuf net r275进行数据协定序列化,protobuf-net,Protobuf Net,我刚刚更新到r275版本,它似乎不再正确管理DataContract类 通过序列化这个非常简单的类: [DataContract] public class ProtoData { [DataMember(Order = 1)] private long _id; [DataMember(Order = 2)] private string _firstName; [DataMember(Order = 3)] private string _la
[DataContract]
public class ProtoData
{
[DataMember(Order = 1)]
private long _id;
[DataMember(Order = 2)]
private string _firstName;
[DataMember(Order = 3)]
private string _lastName;
public long Id
{
get { return _id; }
set { _id = value; }
}
public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}
public ProtoData(long id, string firstName, string lastName)
{
_id = id;
_firstName = firstName;
_lastName = lastName;
}
public ProtoData()
{
}
我只得到可以处理的数据协定类(以及此类的列表/数组)(错误处理ProtoData)请尝试以下操作:
- 删除所有私人成员
- 使用公共财产 公共字符串LastName
- 用[DataMember]标记所有公共属性
- 删除所有私人成员
- 使用公共财产 公共字符串LastName
- 用[DataMember]标记所有公共属性
- 真的吗?那就是。。。。古怪的我本以为单元测试会发现这样一个突破性的变化。您确定使用的版本正确吗?有一个2.0版本(它不包括
[DataContract]
支持,因为它在WCF中是一个3.0扩展)和一个单独的3.0版本。您需要3.0版本(NET30.zip
)
使用r275/NET30成功测试:
static void Main() {
ProtoData pd = new ProtoData {
FirstName = "Marc",
LastName = "Gravell",
Id = 23354
}, clone;
using (MemoryStream ms = new MemoryStream()) {
Serializer.Serialize(ms, pd);
Console.WriteLine(ms.Length);
ms.Position = 0;
clone = Serializer.Deserialize<ProtoData>(ms);
}
Console.WriteLine(clone.FirstName);
Console.WriteLine(clone.LastName);
Console.WriteLine(clone.Id);
}
真的吗?那就是。。。。古怪的我本以为单元测试会发现这样一个突破性的变化。您确定使用的版本正确吗?有一个2.0版本(它不包括
[DataContract]
支持,因为它在WCF中是一个3.0扩展)和一个单独的3.0版本。您需要3.0版本(NET30.zip
)
使用r275/NET30成功测试:
static void Main() {
ProtoData pd = new ProtoData {
FirstName = "Marc",
LastName = "Gravell",
Id = 23354
}, clone;
using (MemoryStream ms = new MemoryStream()) {
Serializer.Serialize(ms, pd);
Console.WriteLine(ms.Length);
ms.Position = 0;
clone = Serializer.Deserialize<ProtoData>(ms);
}
Console.WriteLine(clone.FirstName);
Console.WriteLine(clone.LastName);
Console.WriteLine(clone.Id);
}
原始异常找不到合适的默认ProtoData编码。原始异常找不到合适的默认ProtoData编码。我找不到,我被VS2005卡住了。我尝试过。同样的结果。这段代码在262版上运行得很好。现在所有使用DataContract的单元测试都失败了。我不能,我被VS2005困住了。我试过了。同样的结果。这段代码在262版上运行得很好。现在所有使用DataContract的单元测试都失败了。Ups,谢谢你的回答,很抱歉浪费了你的时间。一切都恢复正常了。我用的是2.0版:(Ups,谢谢你的回答,也很抱歉浪费了你的时间。一切都恢复正常了。我用的是2.0版:(