1

この形のデータ コントラクトを持つことはできますか??

[DataContract]

public class YearlyStatistic{

[DataMember]
public string Year{get;set;}

[DataMember]
public string StatisticName {get;set;}

[DataMember]
public List<MonthlyStatistic> MonthlyStats {get;set}
};

ここでは、MonthlyStatistic クラスも DataContract である必要があると想定しています。Webサービスでこれを行うことはできますか?

4

3 に答える 3

4

Web サービスに同じモデルを使用するには、クラスを Serializable としてマークし、System.Xml.Serialization 名前空間で XmlRoot と XmlElement を使用します。あなたの例を使用したサンプルを次に示します。

[Serializable]
[XmlRoot("YearlyStatistic")]
public class YearlyStatistic
{
    [XmlElement("Year")]
    public string Year { get; set; }

    [XmlElement("StatisticName")]
    public string StatisticName { get; set; }

    [XmlElement("MonthlyStats")]
    public List<MonthlyStatistic> MonthlyStats { get; set; } 
}

親オブジェクトの複雑なオブジェクト プロパティについても同じことを行う必要があります。

于 2009-04-02T18:13:46.743 に答える
1

はい、上記のデータ コントラクトを WCF サービスから送受信できます。あなたが言ったように、MonthlyStatistic とそのすべてのメンバーは、データ コントラクト自体として定義するか、組み込み型 (文字列など) にする必要があります。

基本クラスがあり、派生クラスのオブジェクトを送受信したい場合のように、より複雑な型を送受信することもできます (KnownType 属性を使用して行います)。Javascript から受信 (デシリアライズ) するときに、WCF の型を指定する必要があるというトリックがあります。興味のある方はお気軽にお尋ねください。

于 2010-02-28T04:50:28.760 に答える