在Silverlight的异步WCF服务调用中返回此类型时遇到问题

时间:2010-08-09 21:12:16

标签: .net silverlight wcf asynchronous nested

我有一个WCF服务 它返回以下类型。我得到的是第一级数据,但没有嵌套列表中的任何数据......可能是我的问题?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace slCF2.Web
{
    public class Customer
    {
        string _firstname;
        string _lastname;              
        List<BO> _bos;
        List<AO> _aos;



        public string FirstName
        {
            get { return _firstname; }
            set { _firstname = value; }
        }

        public string LastName
        {
            get { return _lastname; }
            set { _lastname = value; }
        }

        public System.Collections.Generic.List<AvailableOption> AvailableOptions
        {
            get { return _availableoptions; }
            set { _availableoptions = value; }
        }

        public System.Collections.Generic.List<BuiltOption> BuiltOptions
        {
            get { return _builtoptions; }
            set { _builtoptions = value; }
        }

    }
    [Serializable]
    public class AO
    {
        string _code;

        public string Code
        {
            get { return _code; }
            set { _code = value; }
        }

    }
    [Serializable]
    public class BO
    {
        string _code;

        public string Code
        {
            get { return _code; }
            set { _code = value; }
        }

    }
}

1 个答案:

答案 0 :(得分:0)

我会将[DataContract]属性放在类上,[DataMember]放在要包含在WCF消息中的所有属性上。

[DataContract]
public class Customer
{
    string _firstname;
    string _lastname;              
    List<BO> _bos;
    List<AO> _aos;

    [DataMember]
    public string FirstName
    {
        get { return _firstname; }
        set { _firstname = value; }
    }

    [DataMember]
    public string LastName
    {
        get { return _lastname; }
        set { _lastname = value; }
    }

    [DataMember]
    public System.Collections.Generic.List<AvailableOption> AvailableOptions
    {
        get { return _availableoptions; }
        set { _availableoptions = value; }
    }

    [DataMember]
    public System.Collections.Generic.List<BuiltOption> BuiltOptions
    {
        get { return _builtoptions; }
        set { _builtoptions = value; }
    }
}

[DataContract]
public class AO
{
    string _code;

    [DataMember]
    public string Code
    {
        get { return _code; }
        set { _code = value; }
    }
}

[DataContract]
public class BO
{
    string _code;

    [DataMember]
    public string Code
    {
        get { return _code; }
        set { _code = value; }
    }
}

在.NET 3.5 SP1中使用WCF这不再是必须具备的标准,但为了清楚明确地表达我的意图,我仍然会把它们放在那里。你需要用那些 - 甚至是嵌套和后代类等来装饰所有类及其属性。

此外,您使用的[Serializable]属性与WCF消息序列化实际上没有任何关系。 WCF使用数据协定序列化程序(默认情况下)使用[DataContract] / [DataMember]属性,或使用XmlSerializer(可选;不使用[Serializable]属性)。