0

我有我能想到的序列化的最普通的例子:一个有两个变量和一个实例的类,我想序列化。 但是,我有问题,下面的代码总是让我一个空字符串。我想出了为什么这可能是..带有数据合同的空字符串序列化

public static async void SaveState() 
    { 
     DataContractJsonSerializer serializer = new DataContractJsonSerializer(new Deck().GetType()); 

     using (var stream = new MemoryStream()) 
     { 
      serializer.WriteObject(stream, new Deck()); 
      using (var sr = new StreamReader(stream)) 
      { 
       Debug.WriteLine(sr sr.ReadToEnd()); 
      } 
     }  
    } 




[DataContract] 
class Deck 
{ 
    [DataMember] 
    public string Name { get; set; } 
    [DataMember] 
    public int Points { get; set; } = 1500; 


    public Deck() 
    { 
     this.Name = "Deck Name"; 
    } 
} 

回答

3

因为你的流是在结束。将您的代码更改为:

public static void Main (string[] args) 
     { 
      DataContractJsonSerializer serializer = new DataContractJsonSerializer(new Deck().GetType()); 

      using (var stream = new MemoryStream()) 
      { 
       serializer.WriteObject(stream, new Deck()); 
       stream.Position = 0;//the key. 
       using (var sr = new StreamReader(stream)) 
       { 
        Console.WriteLine(sr.ReadToEnd()); 
       } 
      } 
     } 
+0

非常感谢!我花了1.5小时的时间...当你从互联网复制代码部分而不理解其背后的所有概念时,这就是问题所在。 – Salocin

相关问题