私のプログラムでは、いくつかのデータをカスタム オブジェクトに保存します。
[Serializable]
[XmlInclude(typeof(MsgTimerSettings))]
public class MsgTimerSettings
{
public string t_name { get; set; }
public string t_subj { get; set; }
public string t_nmsg { get; set; }
public UUID t_attach { get; set; }
public string t_attachName { get; set; }
public Dictionary<string, UUID> t_ngroups { get; set; }
public Dictionary<string, UUID> t_imgroups { get; set; }
public string t_IMmsg { get; set; }
public string t_SLURL { get; set; }
public int t_Type { get; set; }
public int t_IMsetting { get; set; }
public int t_ImgIndex { get; set; }
public bool t_StartNow { get; set; }
public DateTime t_StartTime { get; set; }
public bool t_EndAt { get; set; }
public DateTime t_EndTime { get; set; }
public int t_Number { get; set; }
public string t_Period { get; set; }
public int t_Interval { get; set; }
public bool t_Active { get; set; }
}
これらの各オブジェクトは Dictionary(Dictionary MsgTimers;) に格納されます。辞書キーはタイマーの名前です。
次に、これらの各オブジェクトを XML ファイルに保存して、次にプログラムを起動したときにタイマーを読み戻せるようにします。
辞書はシリアル化できないことを知っており、問題を回避するためのさまざまな解決策を見つけようとしましたが、役に立ちませんでした。
http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspxに示されている SerializableDictionary 回避策を使用して、シリアライズ可能な辞書を作成しようとしましたが、辞書を SerializableDictionaries にするだけではありません。 、私はまだ手がかりがありません...
シリアル化しようとしたコードは次のとおりです。
static public void SerializeToXML(SerializableDictionary<string, object> ST)
{
XmlSerializer serializer = new XmlSerializer(typeof(SerializableDictionary<string,object>));
TextWriter textWriter = new StreamWriter(@"C:\ST.xml");
serializer.Serialize(textWriter, ST);
textWriter.Close();
}
誰かが私を助けてくれることを願っています。