0
期待:XMLファイルのintのリストをitemPoolというリストに読み込みます。DataContractSerializerを使用してintリストを逆シリアル化しようとしましたが、予期しないInvalidOperationExceptionが発生しました
結果:「InvalidOperationExceptionが:。System.Collections.Generic.List`1は[可能System.Int32]知られているタイプのコレクションにすでにXML名http://schemas.microsoft.com/2003/10/Serialization/Arrays:ArrayOfintの登録タイプがあるタイプの追加に失敗しました」私が持っている
次のコード:
using System.Collections.Generic;
using System.Runtime.Serialization;
using Characters;
using Items;
[DataContract(Name ="Savefile", Namespace ="")]
public class Savefile
{
[DataMember(Name ="Characters")]
public List<Character> characters = new List<Character>();
[DataMember(Name = "ItemPool")]
public List<int> itemPool = new List<int>();
public void Initialize()
{
foreach (Character c in characters)
c.Initialize();
ItemPool.Load(itemPool.ToArray());
}
}
そして、次のような方法で別のクラス:
public static void LoadFromSavefile()
{
DataContractSerializer serializer = new DataContractSerializer(typeof(Savefile));
FileStream stream = new FileStream(Path.Combine(Application.dataPath, _savefilePath), FileMode.Open);
_currentSave = serializer.ReadObject(stream) as Savefile;
stream.Close();
}
そして、次のXMLファイル、そのクラスのABO読んでから。
<?xml version="1.0" encoding="utf-8"?>
<Savefile xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Characters>
<Character>
<... not relevant clutter.../>
</Character>
</Characters>
<ItemPool>
<value>1</value>
</ItemPool>
</Savefile>
ので、私は、プライベートフィールドをシリアル化することができます - シリアル化する必要が本当に現実的ではありませんすべてのためのパブリックフィールドを使用して。 私は、私の知っている限り、私の漠然としているかもしれませんが、Itemクラスには "value"というフィールドがありません。これはintの配列のXML定義です。 私はあなたが私の問題/質問を誤解していると思う私は、DataContractSerializer – ag4w
は、私が項目のリストをデシリアライズではないのです - I intのリストをデシリアライズしようとしています。 何らかの理由で、私はInvalidOperationExceptionを受け取ります。 – Programmer
を使用するために、ファイルを編集しているのint [] int型{1} = –
ag4w