having trouble returning this type in A Asynchronous WCF Service Call From Silverlight
I have a WCF Service.
It returns the below type. I get the data in the first level but not any of the data in the nested lists... What could be my problem?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; }
}
}
[Seriali开发者_StackOverflowzable]
public class BO
{
string _code;
public string Code
{
get { return _code; }
set { _code = value; }
}
}
}
I would put [DataContract]
attributes on the classes and [DataMember]
on all the properties you want to include in the WCF messages.
[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; }
}
}
With WCF in .NET 3.5 SP1 this is no longer a must-have criteria, but just to be clear and explicit in my intent, I would still put those on anyway. You need to decorate all classes and their properties with those - even nested and descendant classes etc.
Also, the [Serializable]
attribute you use doesn't really have anything to do with WCF message serialization. WCF uses either the data contract serializer (by default) using the [DataContract] / [DataMember]
attributes, or the XmlSerializer (optional; works without the [Serializable]
attribute, too).
精彩评论