C# 无法序列化此列表<;T>;延伸
我正试图通过WCF将数据集合的一个子集推送到WCF——想想分页数据。因此,我希望这个集合有一页的数据和总的结果。我认为通过创建一个扩展列表的自定义对象,这应该很简单。但是,我所做的一切都会导致TotalNumber属性显示为0。所有数据都可以被序列化/反序列化,但是这个整数根本不会出现 这是我第一次失败的尝试:C# 无法序列化此列表<;T>;延伸,c#,wcf,serialization,visual-studio-2010,C#,Wcf,Serialization,Visual Studio 2010,我正试图通过WCF将数据集合的一个子集推送到WCF——想想分页数据。因此,我希望这个集合有一页的数据和总的结果。我认为通过创建一个扩展列表的自定义对象,这应该很简单。但是,我所做的一切都会导致TotalNumber属性显示为0。所有数据都可以被序列化/反序列化,但是这个整数根本不会出现 这是我第一次失败的尝试: [Serializable] public class PartialList<T> : List<T> { public PartialList()
[Serializable]
public class PartialList<T> : List<T>
{
public PartialList()
{
}
public PartialList(IEnumerable<T> collection)
: base(collection)
{
}
[DataMember]
public int UnpartialTotalCount { get; set; }
[可序列化]
公共类PartialList:列表
{
公共党派人士()
{
}
公共partialist(IEnumerable集合)
:基本(集合)
{
}
[数据成员]
public int unparaltotalcount{get;set;}
我的第二次尝试也以同样的方式失败了:
[Serializable]
public class PartialList<T> : List<T>, ISerializable
{
public PartialList()
{
}
public PartialList(IEnumerable<T> collection)
: base(collection)
{
}
[DataMember]
public int UnpartialTotalCount { get; set; }
protected PartialList(SerializationInfo info, StreamingContext context)
{
UnpartialTotalCount = info.GetInt32("UnpartialTotalCount");
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("UnpartialTotalCount", UnpartialTotalCount);
}
}
[可序列化]
公共类PartialList:列表,ISerializable
{
公共党派人士()
{
}
公共partialist(IEnumerable集合)
:基本(集合)
{
}
[数据成员]
public int unparaltotalcount{get;set;}
受保护的PartialList(SerializationInfo信息、StreamingContext上下文)
{
UnpartialTotalCount=info.GetInt32(“UnpartialTotalCount”);
}
public void GetObjectData(SerializationInfo信息、StreamingContext上下文)
{
info.AddValue(“UnpartialTotalCount”,UnpartialTotalCount);
}
}
这里的交易是什么???对于WCF,您可能希望在类上使用
[DataContract]
属性,而不是ISerializable接口。WCF使用不同类型的序列化和不同的约定来标记应序列化的类和成员
WCF可能支持[Serializable]或ISerializable,但我建议对WCF仅使用[DataContract]/[DataMember]/等约定。根据,这是“设计上的”。-(如果其他人发现此主题,
对自定义集合类型无效
您应该改用
。它是一个类似的名称空间,具有等效的成员,但它能够处理自定义列表和字典。有关更多信息,请参阅本文中的“自定义集合”:
属性[DataContract]
会导致运行时错误,称其为不正确的集合。我不确定确切的错误,但我已经尝试过了。