gpt4 book ai didi

c# - InvalidDataContractException 是无效的集合类型,因为它具有 DataContractAttribute

转载 作者:太空狗 更新时间:2023-10-29 18:05:22 26 4
gpt4 key购买 nike

我有这个代码:

[DataContract]
class MyData
{
private Int32 dato1;
[DataMember]
public Int32 Dato1
{
get { return dato1; }
set { dato1 = value; }
}

public MyData(Int32 dato1)
{
this.dato1 = dato1;
}
public MyData()
{
this.dato1 = 0;
}
}

[DataContract]
class MyCollection2 : List<MyData>
{
public MyCollection2()
{
}

}

然后我尝试序列化 MyCollection2 的一个对象:

MyCollection2 collec2 = new MyCollection2();
collec2.Add(new MyData(10));
DataContractSerializer ds = new DataContractSerializer(typeof(MyCollection2));
using (Stream s = File.Create(dialog.FileName))
{
ds.WriteObject(s, collec2);
}

然后我得到下一个异常:

InvalidDataContractException is an invalid collection type since it have DataContractAttribute

但是,如果我使用下一个类(不直接从 List 继承,而是有一个 List 成员):

[DataContract]
class MyCollection1
{
[DataMember]
public List<MyData> items;

public MyCollection1()
{
items = new List<MyData>();
}

}

这里序列化工作正常。你知道为什么吗 ?。非常感谢。

最佳答案

使用 [CollectionDataContract(...)] 而不是 [DataContract]。有关详细信息,请参阅 here .

有关详细信息,请参阅 here .

关于c# - InvalidDataContractException 是无效的集合类型,因为它具有 DataContractAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22730259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com