我有一个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
是枚举。
知道如何解决这个异常吗?希望得到一些建议/意见。提前谢谢。
答案 0 :(得分: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; }
}