XmlInclude のようなものを使用して型を事前に定義するなど、一連の体操を必要としない、XML シリアライゼーションおよびデシリアライゼーションの汎用メソッドを構築する方法はありますか? ビルドする必要があるコードは、事前定義された型に依存できません。ここでリフレクションを使用できると想定していますが、適切な解決策が見つかりません。NuGet から試したものにはそれぞれ制限があります。
- Polenter は、逆シリアル化できない使用できない出力を生成するようです
- グローバル、Netfx では事前に型定義が必要
- Bender は美しいですが、シリアル化されているオブジェクト内に埋め込まれたオブジェクトをサポートしていないようです
- XSerializer と JsonFX はシリアル化側で必要なものですが、出力は逆シリアル化されません
標準の XmlSerializer は、明らかな理由 (定義済みの型、XmlInclude など) で機能しません。
シリアル化してから逆シリアル化する必要があるものの簡単な例:
public class c1
{
public string name { get; set; }
public object obj { get; set; }
}
public class c2
{
public string city { get; set; }
}
public static void Main(string[] args)
{
c1 class_1 = new c1();
c2 class_2 = new c2();
class_1.name = "david";
class_2.city = "chicago";
class_1.obj = class_2;
string xml = <insert here>;
Console.WriteLine("XML: " + xml);
c1 deserialized = new c1();
deserialized = <insert here>;
Console.WriteLine("City: " + ((c2)c1.obj).city);
}
このようなものは存在しますか?