如何序列化未设计为序列化的类?

Mar*_*tin 12 c# xml-serialization

我需要将一些类和数据结构保存到文件中.我的第一反应是使用XML或二进制序列化,但这变成了一场噩梦.我有一组不是序列化的类(私有setter,没有无参数构造函数,没有Seri​​alization属性,字典等).考虑到我不能改变那些课程,我该怎么办?有没有解决方法,仍然使用序列化?

我是否必须编写所有代码来编写属性,集合等?

小智 9

使用JavaScriptSerializer.它位于System.Web.Script.Serialization命名空间中,并在System.Web.Extensions.dll程序集中的3.5框架中实现.

使用此类,您可以序列化任何POCO,无论它是否标记为[Serializable].您的程序不必是使用JSON序列化的Web应用程序.这是一个例子:

public class Unserializable
{
  public int Age { get; set; }
  public int ID { get; set; }
  public string Name { get; set; }
}

public class Program
{
  static void Main()
  {
    var u = new Unserializable
            {
              Age = 40,
              ID = 2,
              Name = "Betty"
            };
    var jser = new JavaScriptSerializer();
    var jsonText = jser.Serialize( u );
    // next line outputs {"Age":40,"ID":2,"Name":"Betty"}
    Console.WriteLine( jsonText );
  }
}
Run Code Online (Sandbox Code Playgroud)


Sam*_*Sam 7

听起来像...序列化代理人的工作!

请访问http://msdn.microsoft.com/en-us/magazine/cc188950.aspx

概述.