0

我有这样的 ServiceContract :

    bool CreateSlideshow(Slideshow current, string path, string name);

当我运行调用该服务的程序时,出现以下异常:

尝试序列化参数 http://tempura.org/:current时出错。InnerException 消息是 'Type 'System.DelegateSerializationHolder+DelegateEntry' 与数据协定名称 'DelegateSerializationHolder.DelegateEntry:http://schemas.datacontract.org/2004/07/System' 不是预期的。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中......

显然问题出在Slideshow. 我的班级Slideshow有以下成员:

    private String name;
    private String path;
    private List<Slide> slides;

并且该类Slide具有以下成员:

    private String title;
    private ContentTypeEnum contentType;
    private String textContent;
    private String pictureContextPath;

ContentTypeEnum枚举在哪里。

知道如何解决异常吗?希望得到一些建议/建议。提前致谢。

4

1 回答 1

0

您使用的类型必须用[DataContract]属性标记。必须用属性标记[DataMember]属性。

此外,您的字段应该是公共属性,因为数据合同仅对私有字段没有任何意义。

[DataContract]
public class Slideshow
{
    [DataMember]
    public String Name { get; set; }
    [DataMember]
    public String Path { get; set; }
    [DataMember]
    public List<Slide> Slides { get; set; }
}

[DataContract]
public class Slide
{
    [DataMember]
    public String Title { get; set; }
    [DataMember]
    public ContentTypeEnum ContentType { get; set; }
    [DataMember]
    public String TextContent { get; set; }
    [DataMember]
    public String PictureContextPath { get; set; }
}
于 2012-10-11T09:31:09.717 回答