c# - 派生クラスのシリアル化に基本クラスのフィールドが含まれていません

原文 c# xml inheritance serialization

C#プログラムに次の2つのクラスがあるとします。

[Serializable]
public class Base
{
    public string str1;
    public string str2;
    public string str3;
}

[Serializable]
public class  Derived : Base
{
    public string str4;
    public string str5;
}


そして、私のプログラムでは、List<Derived>をXMLにシリアル化しようとしています。

List<Derived> ToSerialize;
string path;
...
var ser = new XmlSerializer(typeof(List<Derived>));
using (var fs = new FileStream(path, FileMode.Create))
{
    ser.Serialize(fs, ToSerialize);
}


ただし、出力のBaseフィールド、str1str2str3は含まれません。

私はこれにかなり慣れていないので、これが簡単であることを願っています/シリアライザへの追加入力のみが必要です(私は追加のBaseタイプを追加しようとしましたが、まだ運がありません)が、それを理解することはできません。

どんな助けでも本当にいただければ幸いです!!!

ありがとう!
答え
[XmlInclude(typeof(Derived))]
[Serializable]
public class Base
{
    public string str1;
    public string str2;
    public string str3;
}

[Serializable]
public class  Derived : Base
{
    public string str4;
    public string str5;
}

....

var ser = new XmlSerializer(typeof(Base));
関連記事

c# - C#プログラムからのPowerShellスクリプトの実行は、直接実行する場合とは異なる動作をします

c# - ViewModel依存関係を持つICommand

c# - WCF独自のEndpointBehavior読み取りクライアントセッション

c# - Convert.ChangeType()が日付文字列(dd / MM / yyyy形式)を日時タイプに変換しないのはなぜですか?

c# - 辞書からnull可能値を削除し、型を再キャストする

c# - C++からC#への複雑な構造体のマーシャリング

c# - C#:テキストファイルへの変数の挿入

c# - エンティティフレームワークで作成されたデータベースからヘルパーのドロップダウンリストにアイテムをロードする

c# - Web APIのリクエストに一致する複数のアクションが見つかりました

c# - 日付ピッカーのドロップダウンリストから日付を無効にする