有没有办法构建XML序列化和反序列化的通用方法,不需要一堆体操,包括使用像XmlInclude这样的预定义类型?我需要构建的代码不能依赖于预定义的类型。我假设可以在这里使用Reflection,但我找不到合适的解决方案。我从NuGet尝试的每个都有局限性:
标准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);
}
这样的事情是否存在?
答案 0 :(得分:0)
我不确定你的意思是“不定义类型”。如果它是您的代码正在使用的对象,则它具有类型。最简单的方法是编写代码以对抗ISerializable - 然后它可以与任何可序列化类型一起使用 - 甚至是您的代码在构建时不知道的那些。或者,如果您正在使用动态对象(其成员在运行时定义的对象),请查看此问题以获取制作ISerializable DynamicObject的示例:https://stackoverflow.com/a/7501960/518955