オブジェクトを分離ストレージに保存しようとしましたが、受信されましたA first chance exception of type 'System.Runtime.Serialization.InvalidDataContractException' occurred in System.Runtime.Serialization.ni.dll
私のオブジェクトクラス
[DataContract]
public class NoteContent : IEnumerable
{
[DataMember]
public Microsoft.Phone.Controls.SupportedPageOrientation SupportedOrientation{ get; set; }
[DataMember]
public List<Character> NoteCharacterList { get; set; }
[DataMember]
public string NoteFileName { get; set; }
private List<Character> notecontent = new List<Character>();
public void Add(Character charObj)
{
notecontent.Add(charObj);
NoteCharacterList = notecontent;
}
public void Clear()
{
notecontent.Clear();
}
public Character this[int id]
{
get { return notecontent[id]; }
}
public IEnumerator<Character> GetEnumerator()
{
return notecontent.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
オブジェクトをシリアル化して保存するために使用しているコード。この行でエラーが発生しました_mySerializer.WriteObject(targetFile, sourceData);
public void SaveMyData(NoteContent sourceData, String targetFileName)
{
string TargetFileName = String.Format("{0}/{1}.dat", TargetFolderName, targetFileName);
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!store.DirectoryExists(TargetFolderName))
store.CreateDirectory(TargetFolderName);
try
{
using (var targetFile = store.CreateFile(TargetFileName))
{
_mySerializer.WriteObject(targetFile, sourceData);
}
}
catch (Exception e)
{
store.DeleteFile(TargetFileName);
}
}
}
オブジェクトには、オブジェクトとコントロールのリストが含まれています。
保存するメイン オブジェクト内のオブジェクトのリスト
イメージ コントロールやキャンバス コントロールなどのオブジェクトをシリアル化できないためですか? そのようなオブジェクトを分離ストレージに保存する最善の方法は何ですか?
更新 1
次のプロパティのみを含めるようにオブジェクトを単純化しましたが、それでも同じエラーが発生します。Points と Char はシリアライズ可能ですか?
public Point ImagePosition { get; set; }
public Char CharText { get; set; }
public double ImageDegree { get; set; }
public double ImageScale { get; set; }
public int ImageZOrder { get; set; }
public bool IsResizeCancel { get; set; }
public double MaxSliderValue { get; set; }
public double CurrentWidth { get; set; }
public double CurrentHeight { get; set; }