这就是它所说的:不期望输入数据协定名称为'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];
派生自 class :
[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; }
}
}
1 回答
发生这种情况是因为序列化数组 . 但是在传递给构造函数类而不是数组的参数中 .
更换
上