在.NET类中添加一个Font类型的可读写属性,则进行XML序列化时将产生错误,提示原因是Font类没有缺省的无参数构造函数。但是又因为Font类无法继承,因此,无法进行派生一个新的类完成序列化功能。
可以采用两种方法解决:
1、对Font类的各个属性分别单独进行序列化。我在程序中喜欢使用这种办法。
2、采用如下的方法对字体进行序列化(下面的代码来自“http://topic.csdn.net/t/20060802/16/4922267.html”,没有经过验证):
// 要序列化的对象
Font font = new Font("楷体", 80);
// 创建文件流
Stream stream = File.Open("c://font.xml", FileMode.Create);
// 序列化
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, font);
// 关闭流
stream.Close();
// 反序列化对象
object obj = null;
// 读文件
stream = File.Open("c://font.xml", FileMode.Open);
// 反序列化
formatter = new BinaryFormatter();
obj = formatter.Deserialize(stream);
stream.Close();
// 看看效果
this.label1.Font = (Font)obj;
可以采用两种方法解决:
1、对Font类的各个属性分别单独进行序列化。我在程序中喜欢使用这种办法。
2、采用如下的方法对字体进行序列化(下面的代码来自“http://topic.csdn.net/t/20060802/16/4922267.html”,没有经过验证):
// 要序列化的对象
Font font = new Font("楷体", 80);
// 创建文件流
Stream stream = File.Open("c://font.xml", FileMode.Create);
// 序列化
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, font);
// 关闭流
stream.Close();
// 反序列化对象
object obj = null;
// 读文件
stream = File.Open("c://font.xml", FileMode.Open);
// 反序列化
formatter = new BinaryFormatter();
obj = formatter.Deserialize(stream);
stream.Close();
// 看看效果
this.label1.Font = (Font)obj;