トップ回答者
異なる型でXMLシリアライズしたい。

質問
-
Win7 Pro
Visual Studio 2015 Pro
C#
○ソリューション環境
・複数のプロジェクトファイルが存在するソリューションです。
・共通クラスは共通プロジェクトに存在します。
・継承クラス、及び処理クラス1は、ファイル変換プロジェクトにのみ、存在します。
●共通クラス(以下の各publicはそれぞれ同じファイルに宣言しているわけではない)
public partial class Hoge : Hoge_Common.Data.Base_Hoge
{
※実際には200個くらい
public sring aaa { get; set; } = "";
public sring bbb { get; set; } = "";
}
public List<Hoge> HogeList { get; set; } = new List<Hoge>();
// xmlシリアライズ処理
private static void xmlSerialize(StreamWriter sw, List<Hoge> HogeLists)
{
xmlSerializer = new XmlSerializer(typeof(List<Hoge>));
xmlSerializer.Serialize(sw, HogeLists);
}
●継承クラス
// Hogeクラスを使用してXML出力したかのようにするため、親タグも書き換える
[XmlRoot(ElementName = "ArrayOfHoge")]
public class Locals
{
[XmlElement(ElementName = "Hoge")]
public List<Local> ListLocal { get; set; }
}
public partial class Local : Hoge
{
※実際には15個くらい
[System.Xml.Serialization.XmlIgnoreAttribute]
public sring ccc { get; set; } = "";
[System.Xml.Serialization.XmlIgnoreAttribute]
public sring ddd { get; set; } = "";
}
●処理クラス1
List<Hoge> HogeLists = new List<Hoge>;
// 処理データを格納
List<Local> XMLaryLocal = new List<Local>();
HogeLists.AddRange(XMLaryLocal);
○やりたいこと
Hogeクラスという共通クラスがありますが、データを処理する上で、
継承クラスを使用する必要があります。
継承クラスで宣言したプロパティはXMLに出力する必要はありません。
共通クラスの「xmlSerializer.Serialize(sw, HogeLists);」において、
"XML ドキュメントを生成中にエラーが発生しました。"というエラーが発生します。
これは、継承クラスからなるデータを格納したが、
XMLシリアライズ時には、継承元クラスの型を使用しているためと考えております。
そこで、共通クラスの処理内容を変更せず、
ファイル変換プロジェクト内で格納したデータをXMLシリアライズするには、
継承クラスを使用せず、Hogeクラスに直接データを格納するしかないでしょうか?
以上、何卒宜しくお願い申し上げます。