オブジェクトをアプリケーション設定にシリアル化しようとしています。私はすでにオブジェクト型に設定されている設定を持っています。ここに私が連載しようとしているクラスがあります。アプリケーションの設定にオブジェクトをシリアル化する必要があるのは、実行時にオブジェクトの型がわからないためです。C#でオブジェクトをアプリケーション設定にシリアル化する
[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属性を含んでいましたので、私はちょっと困りました。
.NETでXmlシリアル化を使用する場合、 '[Serializable]'を追加する必要はありません。それを使用すると、人々は何かをしたり、必要であると想定したりするので、誤解を招く恐れがあります。 – Cheeso