Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Protobuf net 使用protobuf net r275进行数据协定序列化_Protobuf Net - Fatal编程技术网

Protobuf net 使用protobuf net r275进行数据协定序列化

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

我刚刚更新到r275版本,它似乎不再正确管理DataContract类 通过序列化这个非常简单的类:

[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版:(