无法将对象图反序列化为具有继承层次结构的对象

时间:2014-07-27 10:27:57

标签: c# ajax json web-services inheritance

我有一个Web服务,包括以下方法:

[WebMethod]
public void saveDayEntries(List<DayEntry> listofEntries, string language)
{...}

有一个类似的继承层次结构: DayEntry-&GT; DataEntry-&GT; DayEntryLD

还有一个界面,所以我必须参加DayEntry并且不能参加DayEntryLD。

在客户端,我从DayEntryLD类型创建一个数组,并将其发送到Webservice / saveDayEntries,如下所示:

        $.ajax({
        type: "POST",
        url: "DataProviderFD.asmx/saveDayEntries",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        data: "{'listofEntries':" + JSON.stringify(data) + ", 'language': '" + lang + "'}"
    });

如果我执行代码,我会收到以下错误: “无法将对象图反序列化为DayEntry类型”

我想我理解这个问题,但我不知道如何解决它。 有任何人对此有经验吗? THX。

1 个答案:

答案 0 :(得分:0)

您是否尝试使用XmlInclude属性注释服务方法?您需要为层次结构中的每个派生类型指定此类属性。

[WebMethod]
public void saveDayEntries(List<DayEntry> listofEntries, string language){}

[XmlInclude(typeof(DataEntry))]
[XmlInclude(typeof(DataEntryLD))]
class DayEntry{}