gpt4 book ai didi

c# - 数据契约(Contract)的序列化异常

转载 作者:行者123 更新时间:2023-11-30 22:09:32 25 4
gpt4 key购买 nike

是这样写的:不应键入数据协定名称为“ArrayOfItemType:ItemType”的“ItemType[]”。考虑使用 DataContractResolver 或将任何未知类型静态添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。

代码很基础

DataContractSerializer ser = new DataContractSerializer(typeof(ItemType));
FileStream file = new FileStream("ItemType.xml", FileMode.Create);
ser.WriteObject(file, itemTypes);

我试图序列化的对象是

protected static ItemType[] itemTypes = new ItemType[100];

派生自类:

[DataContract(Namespace = "ItemType")]

public class ItemType
{
string name;
private int numberOfActions;

[DataMember()]
public int[] codeOfAction = new int[10];
[DataMember()]
public int[] recipeType;
[DataMember()]
public int[] recipeNum;

public ItemType()
{
this.name = " ";
this.recipeType = new int[10];
this.recipeNum = new int[10];
this.recipeType[0] = 0;
}
[DataMember]
public string ItemName
{
get {return name;}
set { name = value; }
}
[DataMember]
public int NumberOfAction
{
get { return numberOfActions; }
set { numberOfActions = value; }
}
}

最佳答案

发生这种情况是因为您序列化了一个数组。但是传递给构造函数类的参数不是数组。

替换

DataContractSerializer ser = new DataContractSerializer(typeof(ItemType));

DataContractSerializer ser = new DataContractSerializer(typeof(ItemType[]));

关于c# - 数据契约(Contract)的序列化异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21516324/

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