0

私はそのような ServiceContract を持っています:

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

サービスを呼び出すプログラムを実行すると、次の例外が発生します。

パラメータ http://tempura.org/:currentをシリアライズしようとしてエラーが発生しました。InnerException メッセージは、データ コントラクト名 'DelegateSerializationHolder.DelegateEntry:http://schemas.datacontract.org/2004/07/System' を持つ 'Type 'System.DelegateSerializationHolder+DelegateEntry' でした。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 に答える