0

DataContractSerializer を使用してファイルを逆シリアル化しようとしています。私はそのようなクラスを持っています:

[DataContract]
public class kontenerUstawienia
{
    [DataMember]
    public int[] stanGry;
    [DataMember]
    public int maxSize;
    [DataMember]
    public int[] stanOpcji;

    [DataMember]
    public int numerFlagi1;
    [DataMember]
    public int numerFlagi2;

    public kontenerUstawienia()
    {
    }

(...)
}

内部では、シリアル化されたクラス インスタンスをファイルに保存した後、ファイルを読み取り、逆シリアル化を試みます。

try
{
    zapiszObiektUstawien((kontenerUstawienia)deserializer.ReadObject(strumien));
}

catch (SerializationException e)
{
    System.Diagnostics.Debug.WriteLine("\n\n\n\n++++++\n" + 
    e.Message 
    + "\n+++++++++++++++++++++++++++++++++++++++++++++++");
}

キャッチは私を印刷します:

++++++
There was an error deserializing the object of type
WindowsPhoneGame1.kontenerUstawienia. There are multiple root elements. Line 1,
position 599.
+++++++++++++++++++++++++++++++++++++++++++++++

私は何を間違っていますか?

編集:シリアル化して保存するコードは次のとおりです。

public void zapiszDoPliku(string sciezkaDoPliku, IsolatedStorageFile katalog)
{
    IsolatedStorageFileStream strumien = katalog.CreateFile(sciezkaDoPliku); // tworzenie pliku

    MemoryStream ms = new MemoryStream();
    StreamReader r  = new StreamReader(ms);

    DataContractSerializer serializer = new DataContractSerializer(typeof(kontenerUstawienia));

    serializer.WriteObject(ms, this);

    ms.Position = 0;

    string daneDoZapisania = r.ReadToEnd();

    byte[] bytes = Encoding.Unicode.GetBytes(daneDoZapisania);

    strumien.Write(bytes, 0, bytes.Length);

    ms.Close();
    strumien.Close();
}

EDIT2:

ファイルが保存されました: ファイルはここにあります

4

1 に答える 1

1

書き込む前にファイルが空だったことは確かですか?

于 2013-03-21T11:21:50.537 に答える