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