3tzjq 2014年07月04日
反序列化旧文件的问题。
我有一个类:

[Serializable()]
public class KeywordOptions
{

/// <summary>
/// 关键字
/// </summary>
public string Keyword { get; set; }
/// <summary>
/// 是否为系统定义的关键字
/// </summary>
public bool Defined { get; set; }
}

然后有个泛类对象:
public StockList<KeywordOptions> MyKeywords { get; set; }
this.MyKeywords = new StockList<KeywordOptions>();
....
然后将MyKeywords 用BinaryFormatter序列化为一个文件myKeywords.dat,
现在我需要扩展KeywordOptions类(增加几个属性):

[Serializable()]
public class KeywordOptions
{

/// <summary>
/// 关键字
/// </summary>
public string Keyword { get; set; }
/// <summary>
/// 是否为系统定义的关键字
/// </summary>
public bool Defined { get; set; }
/// <summary>
/// 是否已选中做为搜索关键字配置
/// </summary>
public bool Selected { get; set; }
/// <summary>
/// 消息发布的日期是几天内的(默认 1天)
/// </summary>
public int Days { get; set; }

}


编译后我的程序要反序列化原来的myKeywords.dat文件,但这时候已经无法转换成新的KeywordOptions对像了。

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
FileStream fs = new FileStream(@"c:\\myKeywords.dat", FileMode.Open, FileAccess.Read);
fs.Seek(0, SeekOrigin.Begin);
using (fs)
{
this.MyKeywords = (StockList<KeywordOptions>)bf.Deserialize(fs);// 这里会出错

fs.Close();
}


有没有什么解决方法?
...全文
72 点赞 收藏 5
写回复
5 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告