[英]Web Service method - cannot be serialized because it does not have a parameterless constructor
[英]Service.datalist cannot be serialized because it does not have a parameterless constructor
我正在寫一個網絡方法:
[WebMethod]
public List<datalist7> getsaba(string accno, string fromdate, string todate)
{
SqlConnection con = new SqlConnection(@"Data Source=123-PC;Initial Catalog=bcounts;Persist Security Info=True;User ID=Saba;Password=123");
con.Open();
SqlCommand cmd = new SqlCommand("select gt.Value_Date,gt.Voucher_no+'-'+gr.VchrType as voucher,gt.Acct_Nirration,gr.InstrumentNo,gt.Dr_Amount,gt.Cr_Amount from gl_transaction gt, Gl_Ref gr where gt.Accountno = '" + accno + "' and gt.Voucher_No=gr.Voucher_no and gt.Value_Date between '" + fromdate + "' and '" + todate + "'", con);
SqlDataReader rdr = cmd.ExecuteReader();
decimal crsum = 0;
decimal drsum = 0;
decimal balance = 0;
List<datalist7> data = new List<datalist7>();
if (rdr.HasRows)
{
while (rdr.Read())
{
if (rdr.GetDecimal(4) > 0)
{
balance = balance + rdr.GetDecimal(4);
drsum += rdr.GetDecimal(4);
data.Add(new datalist7(rdr.GetDateTime(0).ToShortDateString(), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3), rdr.GetDecimal(4).ToString(), "-", balance.ToString()));
}
else
{
balance = balance - rdr.GetDecimal(5);
crsum += rdr.GetDecimal(5);
data.Add(new datalist7(rdr.GetDateTime(0).ToShortDateString(), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3), "-", rdr.GetDecimal(5).ToString(), balance.ToString()));
}
}
data.Add(new datalist7("-", "-", "-", "-", drsum.ToString(), crsum.ToString(), "-"));
}
con.Close();
return data;
}
[DataContract]
public class datalist7
{
[DataMember]
public string val1 { get; set; }
[DataMember]
public string val2 { get; set; }
[DataMember]
public string val3 { get; set; }
[DataMember]
public string val4 { get; set; }
[DataMember]
public string val5 { get; set; }
[DataMember]
public string val6 { get; set; }
[DataMember]
public string val7 { get; set; }
public datalist7(string v1, string v2, string v3, string v4, string v5, string v6, string v7)
{
val1 = v1;
val2 = v2;
val3 = v3;
val4 = v4;
val5 = v5;
val6 = v6;
val7 = v7;
}
}
在ASMX中,但出現錯誤:
無法對Service.datalist7進行序列化,因為它沒有無參數的構造函數。
如何解決?
如果您找到以下問題的答案: 為什么XML-Serializable類需要無參數的構造函數,它說明了為什么序列化的類需要具有無參數的構造函數。
您可以刪除構造函數並實例化對象,如下所示:
data.Add(new datalist7() { val1 = "-", val2 = "-", val3 = "-", val4 = "-", val5 = drsum.ToString(), val6 = crsum.ToString(), val7 = "-" });
將此添加到您的datalist7類。 它是默認構造函數。
public datalist7() { }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.