2012-05-20 48 views
7

我有一個我編輯過的webservice,它在工作之前沒有問題。然而,現在我得到這個錯誤:不能序列化,因爲它沒有一個無參數的構造函數我已經發布我的課下面。Webservice無法序列化,因爲它沒有無參數的構造函數

public class Class 
{ 
    public class AnsweredQ 
    { 
     public string Question { get; set; } 
     public string Answer { get; set; } 

     public AnsweredQ(string _Question, string _Answer) 
     { 
      Question = _Question; 
      Answer = _Answer; 
     } 
    } 
    public class UnAnsweredQ 
    { 
     public string Question { get; set; } 
     public string[] Options { get; set; } 

     public UnAnsweredQ(string _Question, string[] _Options) 
     { 
      Question = _Question; 
      Options = _Options; 
     } 
    } 
    public class Trial 
    { 
     public string User { get; set; } 
     public DateTime TrialDate { get; set; } 
     public bool Expired { get; set; } 

     public Trial (string _User, DateTime _TrialDate, bool _Expired) 
     { 
      User = _User; 
      TrialDate = _TrialDate; 
      Expired = _Expired; 
     } 
    } 
} 

,如果你能解決這個問題,請解釋一下我做錯了什麼:)

+1

您改變了什麼?添加/更改構造函數? –

+0

我將結構改爲類,但下面的答案解決了這個問題。 – Kage

回答

9

爲了能夠序列化/反序列化類,序列化需要一個參數的構造函數。因此,您需要將無參數構造函數添加到您的類中,例如:

public class AnsweredQ 
    { 
     public string Question { get; set; } 
     public string Answer { get; set; } 

     public AnsweredQ() { } 


     public AnsweredQ(string _Question, string _Answer) 
     { 
      Question = _Question; 
      Answer = _Answer; 
     } 
    } 
    public class UnAnsweredQ 
    { 


     public string Question { get; set; } 
     public string[] Options { get; set; } 

     public UnAnsweredQ() {} 

     public UnAnsweredQ(string _Question, string[] _Options) 
     { 
      Question = _Question; 
      Options = _Options; 
     } 
    } 


    public class Trial 
    { 
     public string User { get; set; } 
     public DateTime TrialDate { get; set; } 
     public bool Expired { get; set; } 

     public Trial() 
     { 
     } 

     public Trial (string _User, DateTime _TrialDate, bool _Expired) 
     { 
      User = _User; 
      TrialDate = _TrialDate; 
      Expired = _Expired; 
     } 
    } 
} 
+0

謝謝!這確實是個問題。 – Kage

相關問題