我有一个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; }
}
}
}
答案 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]
属性)。