【发布时间】:2011-10-18 11:50:19
【问题描述】:
我有一个类我序列化到一个文件,即。 myfile01.myfile。我正在使用二进制序列化(不是 xml)。
在此类的版本 1 中,有一个字段“ColoredFont”。这是一个包含字体和颜色的类。
在该类的第 2 版中,ColoredFont 类已更改,“Font”字段已替换为“SerializableFont”。
现在的问题:当我想打开版本 1 的文件时,我得到一个错误:
Object of type 'System.Drawing.Font' cannot be converted to
type 'Project.SerializableFont'.
我已经使用了自定义序列化绑定器
public class Binder : SerializationBinder {
public override Type BindToType(string assemblyName, string typeName) {
Type tyType = null;
string sShortAssemblyName = assemblyName.Split(',')[0];
Assembly[] ayAssemblies = AppDomain.CurrentDomain.GetAssemblies();
if (sShortAssemblyName.ToLower() == "project"
|| sShortAssemblyName == "SoftwareV_3.0" )
{
sShortAssemblyName = "SoftwareV_4.0";
}
foreach (Assembly ayAssembly in ayAssemblies) {
if (sShortAssemblyName == ayAssembly.FullName.Split(',')[0]) {
tyType = ayAssembly.GetType(typeName);
break;
}
}
return tyType;
}
}
我如何告诉反序列化将 System.Drawing.Font 转换为 SerializableFont ??
【问题讨论】:
标签: c# .net serialization deserialization