型のプロパティを持つクラスをシリアル化しようとしてTextRange
います。
例:
public class MyClass
{
private string someProp;
public string SomeProp
{
get { return someProp; }
set { someProp = value; }
}
private TextRange myTextRange;
public TextRange MyTextRange
{
get { return myTextRange; }
set { myTextRange = value; }
}
}
問題は、クラス全体をシリアル化している間、TextRange
型を定期的にシリアル化できないことです。それ自体をシリアル化するための独自の特別なメソッドがあります。私は次のようにしています:
using (MemoryStream ms = new MemoryStream())
{
myTextRange.Save(ms, DataFormats.Xaml, true);
string xaml = Encoding.ASCII.GetString(ms.ToArray());
}
TextRange
問題は、クラスをプロパティと他のプロパティを一緒に 1 つの文字列 (xml 文字列) にシリアル化することです。別のシリアル化方法 (xml ではない) を使用してもかまいませんが、問題がどのように解決されるかわかりません。
定期的にクラス全体を一度にシリアライズしますが、TextRange
クラスはシリアライズ可能 (バイナリ シリアライゼーションなし) としてマークされておらず、空のコンストラクター (xml シリアライゼーションなし) を持っていません。
それが私が定期的に行う方法です:
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
StringWriter stringWriter = new StringWriter();
using (XmlWriter writer = XmlWriter.Create(stringWriter))
{
serializer.Serialize(writer, this);
string xml = stringWriter.ToString();
return xml;
}
これどうやってするの?