Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法序列化此列表<;T>;延伸_C#_Wcf_Serialization_Visual Studio 2010 - Fatal编程技术网

C# 无法序列化此列表<;T>;延伸

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()

我正试图通过WCF将数据集合的一个子集推送到WCF——想想分页数据。因此,我希望这个集合有一页的数据和总的结果。我认为通过创建一个扩展列表的自定义对象,这应该很简单。但是,我所做的一切都会导致TotalNumber属性显示为0。所有数据都可以被序列化/反序列化,但是这个整数根本不会出现

这是我第一次失败的尝试:

[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]
会导致运行时错误,称其为不正确的集合。我不确定确切的错误,但我已经尝试过了。