有什么方法可以为 XML 序列化和反序列化构建一个通用方法,而不需要一堆体操,包括使用 XmlInclude 之类的预定义类型?我需要构建的代码不能依赖于预定义的类型。我假设反射可以在这里使用,但我找不到合适的解决方案。我从 NuGet 尝试过的每个都有局限性:
- Polenter 似乎产生无法反序列化的不可用输出
- 全球,Netfx 需要提前定义类型
- Bender 很漂亮,但似乎不支持嵌入在被序列化对象中的对象
- XSerializer 和 JsonFX 是我在序列化方面需要的,但输出不会反序列化
由于明显的原因(预定义类型、XmlInclude 等),标准 XmlSerializer 将无法工作。
我需要序列化然后反序列化的一个简单示例:
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);
}
这样的事情甚至存在吗?