欢迎来到 StackOverflow :D
表示 RSS 提要
您可以使用以下类型来表示提要和文章:
using System;
using System.Collections.Generic;
using System.Linq;
public abstract class RssItem
{
public virtual bool IsRead { get; set; }
public string Name { get; set; }
public string Url { get; set; }
}
public class RssFeed : RssItem
{
public List<RssFeedArticle> Articles { get; set; }
public override bool IsRead
{
get { return Articles.All(s => s.IsRead); }
set { Articles.ForEach(s => s.IsRead = true); }
}
}
public class RssFeedArticle : RssItem
{
public string Content { get; set; }
}
这确实是一个简单的表示,请随意增强它。
基本上,当您设置feed.IsRead = true;
所有文章都将被标记为已读时,如果您查询该值,则true
只有在所有文章都已阅读后才会返回。
例子 :
var article1 = new RssFeedArticle {Name = "article1", Content = "content1"};
var article2 = new RssFeedArticle {Name = "article2", Content = "content2"};
var feed = new RssFeed
{
Name = "cool feed",
Articles =
new List<RssFeedArticle>(new[]
{
article1,
article2
})
};
article1.IsRead = true;
feed.IsRead = true;
存储您的数据
一种常见的方法是将应用程序数据存储在 ApplicationData 文件夹或 My Documents 中。
使用 My Documents 的优点是用户通常会备份此文件夹,而对于新手用户可能甚至不知道它的存在的 ApplicationData 的情况不一定如此。
检索应用程序文件夹的示例:
using System.IO;
private void Test()
{
string applicationFolder = GetApplicationFolder();
}
private static string GetApplicationFolder()
{
var applicationName = "MyCoolRssReader";
string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string applicationFolder = Path.Combine(folderPath, applicationName);
bool exists = Directory.Exists(applicationFolder);
if (!exists)
{
Directory.CreateDirectory(applicationFolder);
}
return applicationFolder;
}
如果您更喜欢我的文档:
string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
这是来自 Microsoft 开发人员的一些解释/建议:
http://blogs.msdn.com/b/patricka/archive/2010/03/18/where-should-i-store-my-data-and-configuration-files-if-i-target-multiple-os-版本.aspx
pubsubhubbub
有一个 C# 库:https ://code.google.com/p/pubsubhubbub-publisherclient-csharp/
(来自https://code.google.com/p/pubsubhubbub/wiki/PublisherClients)
如果您对我的回答感到满意,请不要忘记接受它;如果您仍有一些审讯,请更新您的问题,我会尝试解决它们。