簡體   English   中英

Service.datalist無法序列化,因為它沒有無參數的構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM