我正在尝试将对象序列化为应用程序设置。我已经将一个设置定义为对象类型。这是我要序列化的类。我必须将对象序列化为应用程序设置,因为对象类型在运行时是未知的。
[Serializable]
[XmlInclude(typeof(TemplateGeneratorPreferences))]
public class MyPreferences
{
[XmlElement(ElementName="GeneratorPreferences", Type=typeof(TemplateGeneratorPreferences))]
public TemplateGeneratorPreferences FormSpecificPref{ get; set; }
public MyPreferences()
{
GeneratorPreferences = new ScenarioTemplateGeneratorPreferences();
}
}
[Serializable]
public class TemplateGeneratorPreferences
{
[XmlAttribute("MyBool")]
public bool MyBool { get; set; }
public ScenarioTemplateGeneratorPreferences()
{
MyBool = true;
}
}
这根本不会序列化,我得到以下异常:
“MyPreferences 类型不是预期的。使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型。”
我包含了 XmlInclude 属性,所以我有点难过。