没有为'System.Collections.Generic.IList`1的类型定义无参数构造函数

时间:2014-02-04 08:22:15

标签: asp.net json deserialization

我的课就是这样,

 public class SayfalarIletisim : IHarita
    {
        public string KordinatX{ get;  set; }

        public string KordinatY { get;set; }

        public string Adres{ get;set; }


        public string EkBilgi {get;set;}


      }

和表示层

var IletisimKaydet = function () {

    var adres=       App.txtIletisimAdres.getValue();
    var icerik=       App.txtIcerik.getValue();
    var kX=$('#lat').val();
    var kY=$('#lng').val();

    var dd = JSON.stringify({ 'Adres': adres, 'EkBilgi': icerik, 'KordinatX': kX, 'KordinatY': kY });


    $.ajax({
        type: "POST",
        url: 'WebServiceAdmin.asmx/IletisimKaydet',
        data: "{'p':'" + dd + "'}",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (d) { Ext.Msg.notify('Uyarı', 'ekleme basarılı...'); },
        error: function () { Ext.Msg.notify('Uyarı', 'eklerken hata oluşdu!!!'); }
    });

};

我将数据发送到这样的Web服务,并解析它

 [WebMethod]
          public void IletisimKaydet(string p)
          {

              var serializer= new JavaScriptSerializer ();

            var jsonObjectSayfa = serializer.Deserialize<IList<SayfalarIletisim>>(p);

              dal_syf.GuncelleIletisim(jsonObjectSayfa[0]); 


          }

运行这些代码时,我怎么会收到此错误。

No parameterless constructor defined for type of 'System.Collections.Generic.IList`1

这个代码有什么问题,在我运行这些代码之前没有任何问题。

1 个答案:

答案 0 :(得分:2)

您必须使用类的反序列化,而不是代码中的接口。 像那样:

[WebMethod]
public void IletisimKaydet(string p)
{
     var serializer= new JavaScriptSerializer ();
     var jsonObjectSayfa = serializer.Deserialize<List<SayfalarIletisim>>(p);
     dal_syf.GuncelleIletisim(jsonObjectSayfa[0]); 
}

具体实现List<SayfalarIletisim>支持接口IList<SayfalarIletisim>,因此您仍然可以获得实际的impl。