上次只是给了一个进度,这次把Net2.0版本下的源程序和执行文件附上。
通报一下最近的进度,添加了分组和收藏的功能,热心的Lanny和Justin Shen这是有用的。收藏之时将Rss里面的Item的内容复制下来,如果网页不存在了,那么只能留住本地的东西。Lanny提到将网页也存储下来,嘿,难度太高,小生不行。
还添加了从SharpReader的订阅信息转换,本来想连他的存储Item也转过来,一时忘了,如果有用的话,下次补上。
再有就是把原来的XmlDocument读Rss改成了HttpWebRequest这种方式,感觉速度没有提高,而且在出错提示方面还没有原来的清楚。但是,后者支持代理,所以现在这也支持代理了。感谢tifi在留言中提出。
这次由于添加了新的字段,导致原有的存盘不能读取。
于是这次添加了版本功能。但是由于以前没有此类经验,实现方法也不知道对不对。
下面是我对评论项存盘的代码,这样实现数据的无缝升级可以吗?
/// 序列化评论项内容,满足ISerializable。
/// </summary>
/// <param name="info"></param>
/// <param name="context"></param>
public void GetObjectData(
SerializationInfo info, StreamingContext context)
{
info.AddValue("Version", 1);
info.AddValue("Title", _Title);
info.AddValue("PubDate", _PubDate);
info.AddValue("Description", _Description);
info.AddValue("Author", _Author);
info.AddValue("Link", _Link);
info.AddValue("IsReaded", _IsReaded);
}
/// <summary>
/// 反序列化评论项内容构造函数。
/// </summary>
/// <param name="info"></param>
/// <param name="context"></param>
protected CommentItem(SerializationInfo info, StreamingContext context)
{
int Version = info.GetInt32("Version");
if (Version == 1)
{
//版本号 1
_Title = info.GetString("Title");
_PubDate = info.GetDateTime("PubDate");
_Description = info.GetString("Description");
_Author = info.GetString("Author");
_Link = info.GetString("Link");
_IsReaded = info.GetBoolean("IsReaded");
}
}
另外代理功能一时匆忙没有做对话框,但是可以通过修改setting.xml文件使用。
<Proxy>
<Address/>
<Port>0</Port>
</Proxy>
Net1.1版本的暂时没有同步,这里是10.26的源程序和执行文件。
在看了FeedDemon软件后,大受启发,这的确是一个特别好的Blog阅读软件,所以我以后的模仿对象可能主要以他为主了。