возникли проблемы с возвратом этого типа в асинхронном вызове службы WCF из Silverlight - PullRequest
0 голосов
/ 10 августа 2010

У меня есть служба 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 голосов
/ 10 августа 2010

Я бы поставил [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; }
    }
}

С WCF в .NET 3.5 SP1 это больше необязательные критерии, но чтобы быть ясным и ясным в моих намерениях, я бы все равно их применил.Вам необходимо украсить все классы и их свойства этими объектами - даже вложенные и наследующие классы и т. Д.

Кроме того, используемый вами атрибут [Serializable] не имеет никакого отношения к WCFсериализация сообщений.WCF использует либо сериализатор контракта данных (по умолчанию) с использованием атрибутов [DataContract] / [DataMember], либо XmlSerializer (необязательно; работает и без атрибута [Serializable]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...